Nobreak SMS no Linux

O software que a SMS disponibiliza para comunicar com os nobreaks é no mínimo precário. Não é bem acabado e consome uma enormidade de recursos. É difícil de acreditar que eles distribuem um servidor de aplicação apenas para isso. Resolvi fazer o meu software para comunicar com o nobreak. Veja a saída da versão 0.1:



É apenas um executável simples que não precisa de nada complexo. O código fonte está diponível para download em: https://github.com/petersenna/nobreakSMS.

Também tem alguns binários em: https://github.com/petersenna/nobreakSMS/tree/master/userland/binary


*** ATUALIZAÇÃO DEZEMBRO 2017 ***
Tente usar o nut, Network UPS Tools. Os nobreaks da SMS aparecem na lista de dispositivos compatíveis. O nut está disponível na maioria das distribuições Linux.

Comments

Daniel said…
Tentei mas não consegui. Ele não reconhece o manager III da SMS.

Tem algumas coisas que as empresas deveriam divulgar no site, tipo o protocolo utilizado. Isto com certeza faria eu optar mais fácil por um produto.
Peter said…
Daniel, tente usar o nut que está disponível na maioria das distribuições Linux: https://networkupstools.org/
fabricio said…
O serviço nut não funcionou de forma alguma com meu nobreak (SMS Manager III Senoidal 1400 "SM1400BIFX"), e este script funciona apenas com o nobreak ligado em seu estado normal, se desligar a tomada, o script não consegue comunicação com o nobreak. Eu até que entendo um pouco de programação, olhei o codigo mas não identifiquei o motivo. O protocolo deste meu modelo parece que não segue regras, digito os comandos no terminal, as informações não batem com a documentação do protocolo.
fabricio said…
O serviço nut não funcionou de forma alguma com meu nobreak (SMS Manager III Senoidal 1400 "SM1400BIFX"), e este script funciona apenas com o nobreak ligado em seu estado normal, se desligar a tomada, o script não consegue comunicação com o nobreak. Eu até que entendo um pouco de programação, olhei o codigo mas não identifiquei o motivo. O protocolo deste meu modelo parece que não segue regras, digito os comandos no terminal, as informações não batem com a documentação do protocolo.
Peter said…
Fabricio, obrigado pelo comentário. Eu não sei o que acontece quando você tira o seu nobreak da tomada. Tirar o meu da tomada com ele ligado não fazia diferença. Uma possibilidade é ruído causado pela eletrônica que gera corrente alternada, então você pode tentar usar um cabo USB diferente, ou se certificar que o computador que você está usando para comunicar com o nobreak esteja sendo alimentado pelo nobreak. Mas essas são apenas sugestões, não sei se vai fazer diferença. Abraço e boa sorte!
fabricio said…
Ola tudo bem Peter, poderia me dar uma ajuda, depois de muito tempo, estou tentando fazer seu script funcionar, so tenho retorno de "falha de segmentação", tentando no Debian 11, e no Raspberry (Debian 10.8). Usando debug, o erro é apontado na linha 244 " sprintf (buf, "0x%02x%02x", (unsigned char)rawvalues[j], ". Não entendo muito, contudo não consegui achar onde está o erro. Achei estranho, que logo acima, na linha 208, tem a mesma linha de código na função "check_results", e ela funciona sem erro. Poderia me ajudar? Outra dúvida, é onde você conseguiu a documentação deste protocolo, sem ele tambem fica difícil. Obrigado pela atenção.
Peter said…
Fabricio obrigado pelo comentário. Infelizmente este código é horrivel. Se você ver nas linhas 243 e 246 eu não sabia o que estava acontecendo, e hoje 10 anos depois eu não tenho idéia. Minha expectativa é que a lógica que eu usei é frágil e só funcionou por sorte quando eu escreví o código. Como você está usando debugger, eu acredito que você está bem perto de ver onde o problema está. Investigue o conteúdo das variáveis e dos structs para ver até onde o código funciona. Abraço e boa sorte!
fabricio said…
Ola Peter, Estou igual a você, não entendendo muita coisa, (seu código da pra entender, o que não entendo são as saídas das variáveis e afins), a função "check_results" funciona, tendo a mesma estrutura de "for" que a função "results_to_human", e ela não funciona. Vou fazer um comentário completo lá no repositório git, assim fica atualizado por lá, caso alguém, em algum dia venha a utilizar o código. Estou citando as linhas e o que eu modifiquei, caso queira fazer um update no código. Obrigado pelo retorno e por disponibilizar este código, quebrou meu galho no monitoramento do aparelho (aquele aplicativo oficial ninguém merece, alem de consumir recurso desnecessário, dá muito erro). https://github.com/petersenna/nobreakSMS/issues

Popular posts from this blog

Toshiba R830 and 16GB of RAM

Five steps to create Fedora chroot jail using yum

How to recompile software with hardware optimization?