Criando integração no Home Assistant

Olá pessoas!

Quero fazer uma integração com os aquecedores da Rinnai que usam o módulo ROU-003, mas a documentação do HA está me deixando na mão. Alguém já fez uma integração do zero, ou tem experiência para me ajudar a sair do zero?

Estou usando o home assistant há anos, e estou muito feliz com como tudo “só funciona”, nunca tem dor de cabeça. Estou usando aquela versão que roda no container, usando um raspeberry pi e rodando direto do cartão SD mesmo. Hoje minhas integrações são ao redor do celular com o app, da televisão LG (e com o fireTV), da alexa (com aquela mensalidade pra financiar os caras), das luzes sonoff, e umas cortinas sonoff também.

No caso do aquecedor, eu queria que quando a luz do meu banheiro estivesse acesa e a luz do banheiro da esposa estivesse desligada, que a temperatura baixasse uns 4 graus, e que voltasse à temperatura padrão (40 graus) fora disso. A Rinnai lá de fora até tem uma integração com o HA, vi que usa a cloud deles, e, infelizmente, não funciona com o módulo da Rinnai do Brasil.

O app da Rinnai do Brasil é bem completo (mostra os dados do aquecedor como fluxo, temperatura, ventoinha, etc), mas ainda não faz a integração com o HA. Usando o wireshark, consegui encontrar os comandos que o app usa para falar com o módulo de controle, então sei como monitorar o aquecedor e como alterar a temperatura, são só chamadas HTTP sem autenticação.

A parte difícil é que criar a integração no HA, pela sua flexibilidade, não é tão simples. Consegui montar o ambiente de desenvolvimento (docker, visual studio, github, fazer o fork do código de dev do HA), mas as intruções de como montar a integração em si já não são tão triviais assim.

Usando o scaffold que eles dão, eu consegui “criar” a integração e fazer ela aparecer para ser adicionada no HA. O próximo passo, imagino eu, seria criar o device do tipo water_heater para que eu possa sobrecarregar as funções da classe para, dentro dessas funções, fazer as chamadas que preciso fazer para monitorar e mudar a temperatura como no meu caso de uso.

A parte que não estou me achando é: depois de editar o manifest.json (que fala de nomes), e de editar o init.py (que é o primeiro lugar que fala do tipo de objeto), que são os lugares mais evidentes que vi que tenho que editar? Eu só crio um arquivo water_heater.py na mesma pasta e começo a criar a classe lá dentro? Onde eu instancio essa classe na minha integração? No init tem uma função de setup, eu só crio um objeto com o nome da minha classe ali dentro é isso?

Alguém tem alguma classe mais simples que eu possa olhar para entender? Os exemplos que achei na internet ou são muito básicos (como o hello world que não tem devices), ou muito avançados (como os outros módulos de water heater que mistura devices e sensores e mais tudo), e aí estou fora da minha zona de conforto.

De qualquer maneira, alguém tem alguma direção pra compartilhar? Qualquer ajuda é bem vinda.

1 curtida

Sugiro estudar as possibilidades de integrar via Node Red. Existem nós http, tcp ip, etc.

Oi Andre,

Obrigado por responder! De fato, é uma boa ideia. Vou começar com o node-red para ter algo que possa ser usado agora já now, e acho que ainda teria algum valor fazer a integração, mesmo que seja pra aprender. Sei que o módulo na verdade só usa um ESP, mas ainda estou longe de conseguir baixar o código e descompilar para ver como funciona “de verdade” (para, por exemplo, poder colocar outro ESP no lugar e usar um ESPHome da vida), e aprender a fazer a integração talvez fosse algo pra ajudar no futuro.

Se alguém mais tiver essa experiência, vou continuar tentando por conta, mesmo que seja ficar tateando no escuro. Bom, não acho que essa seja a melhor analogia, tem documentação, mas está escrito de um jeito que ainda não consigo me achar lá dentro.

A Rinnai não disponibiliza a documentação do modulo ou da comunicação do aquecedor?

Sobre a integração, se for apenas HTTP eu acho mais fácil fazer tudo pelo HA usando shell ou rest command ou pelo node red.

Que coincidência, eu acabei de esbarrar com esse fórum e eu comecei em criar uma integração entre o módulo da rinnai e o home assistant, comprei o módulo “no escuro” sem saber se ele iria se comunicar localmente ou se teria que pegar pela nuvem. Ia fazer exatamente o que vc fez nesse fds (rodar o wireshark e ver o que eu iria “fisgar”), mas o meu módulo atrasou a entrega, então só semana que vem :sweat_smile:, pelo menos agora eu já sei que é local e não tem criptografia :raised_hands:.
Dito isso, achei a doc de integrações meio confusa então eu decidi ir pelo caminho mais rápido por hora, porém é matar uma mosca com uma bala de canhão kkkkkk
Minha ideia é criar um addon, receber as configs do módulo (acho que vou precisar do modelo e número de série) por lá e criar/atualizar as entidades via mqtt, vou subir o repo do addon lá no meu github e se quiserem eu vou atualizando o progresso por aqui :smile:

4 curtidas

Oi Walber!

Não tem documentação não. Tanto no suporte do aplicativo na Play Store quanto no pós-venda, fiquei de mãos abanando. Isto posto, é bem trivial o protocolo, então vou conseguir me virar.

Oi Alejr!

Então, aqui vão os meus passos, espero que te ajude!

  1. Instalar o módulo fisicamente :slight_smile:
  2. Configurar usando o app do celular (dica: primeiro fazer o wifi direct, depois mudar pro modo roteador; na teoria não devia fazer diferença, mas é aquela coisa de depender do alinhamento das estrelas pra funcionar; se você conseguir fazer funcionar direto pelo roteador, você é um cara de sorte (ou conhecimento, há)).
  3. Descobrir o IP do device (eu usei o meu roteador para ver na tabela de DHCP)
  4. Aí você já está pronto pra abandonar o app e usar só a API, e estes foram os comandos que encontrei. São todos GET, o que deixa a vida bem fácil. É só você fazer um request HTTP (e.g. “http://256.256.256.256/connect”, sem as aspas e trocando o 256.256.256.256 por um IP válido na sua rede), e processar o resultado, que costuma ser um CSV.
    /connect - não sei o que faz, retorna um MAC address, mas o app sempre manda primeiro
    /bus - é o comando que mais importa, que relata fluxo de água, velocidade da ventoinha, temperatura de entrada, temperatura de saída, quantas horas de uso até agora
    /tela_ - é o comando mais resumido, mostra só umas informações básicas, tipo se está ligado
    /inc - aumenta a temperatura em 1 grau (imita apertar o botão)
    /dec - decrementa a temperatura em 1 grau (imita apertar o botão)
    /lig - liga o aquecedor (imita apertar o botão)
    /historico - mostra os últimos dez usos (tempo, litros de água, volume de gás)
    /SSID:NOMEDAWIFI:PASSWORD:SENHADAWIFI:MODELO:0:FIM - connecta (ou cria) essa rede wifi

Quando você tiver o seu módulo, vamos entrar nos detalhes das respostas? Tenho várias colunas identificadas, mas ainda não entendi o significado de cada uma delas.

Acabei sumindo por uns dias (toneladas de trabalho, faculdade e um GP de Fórmula 1 tudo de uma vez só kkkkkkk) mas voltei :sweat_smile:
Updates:
Peguei esse fds para começar a brincar com o módulo e criar uma POC da integração. Dei uma sofrida com o fato de não conseguir definir a temperatura de uma vez e ter que ficar chamando os endpoints de aumentar/diminuir a temperatura até chegar na temperatura desejada. Mas até que eu cheguei em algo relativamente estável, só não deu para usar a entidade de aquecedor de água pq ainda não é suportada via mqtt :confused: . Juntei tudo em um dispositivo com algumas entidades (status de funcionamento, temperatura definida, temperatura de entrada e temperatura de saída) e já dá para mudar a temperatura via home assistant,
Subi tudo em um repo no github, quem quiser testar e só seguir as instruções por lá: GitHub - ale-jr/rinnai_br_homeassistant: Integração entre módulo wifi dos aquecedores rinnai com o home assistant
Ah, deixei tudo que eu entendi até agora da ““API”” lá no README, se quiser adicionar mais alguma coisa só fazer um fork e abrir um PR :smile:

2 curtidas

@alejr , fiz a integracao do meu modulo wifi rou003 com o HA. Esta funcionando perfeitamente. duas entidades que nao vi necessidade, ficaram indisponivel.(aumentar e diminuir temperatura)

Parabens. por muito tempo procurei essa integração.

1 curtida

Cheguei atrasado, e finalmente consegui um tempo pra fazer funcionar. E só funciona, que coisa mais linda mais maravilhosa mais cheia de graça.

Agora, o próximo passo: subir a temperatura pro banho da esposa, e descer pro meu :smiley:

1 curtida

Parabéns pelo trabalho @alejr, coloquei algumas sugestões no github para deixarmos esse add-on mais top ainda.

1 curtida

Sensacional! Adorei, o problema é que instalei conforme as orientações e ele funciona bem, porem em pouco minutos fica indisponível. Se eu reiniciar o addon ele volta a funcionar, mas logo fica indisponível. Alguém tem ideia do que pode ser?

Confira no add-on o tempo em segundos que você colocou. Eu estava com o mesmo problema, voltei até as configurações e explica que o mínimo recomendável são 30 segundos

Obrigado pelo retorno! A minha já estava em 60 segundos. Mas acabei descobrindo que o Add-on não estava iniciando junto com o Home Assistant. Cada vez que ele reiniciava, perdia a conexão com o mqtt. Então fiz uma automação na qual o trigger é a reinicialização do Home Assistant. Após 1 min do reinicio, a automação inicia o add-on do aquecedor. Tem funcionado bem a um bom tempo já.

Percebi o mesmo problema recentemente, e estou realizando alguns ajustes no código.
Vou criar configurações para tempos de pooling diferentes entre as APIs e entre horários do dia.

Enfim, espero que neste final de semana já tenha algo melhor estruturado e com a resolução do problema do start.

Boa dia! Agradeço imensamente pela criação do Add-on! Está funcionando muito bem!

Tenho dois aquecedores em casa e gostaria de integrar os dois no HA.

Por acaso é possível vincular dois aquecedores com o mesmo Add-on?

Agradeço se alguém puder me ajudar.

Obrigado desde já.

@alejr, por acaso vc consegue me ajudar? Obrigado

@alejr eu vi que seu código é em JavaScript, eu criei uma lib no NPM chamada Marti Home Assistant MQTT Device (https://www.npmjs.com/package/marti-home-assistant-mqtt-device) para criar dispositivos MQTT facilmente.

Eu estou usando em um projeto meu e acho que você poderia contribuir com ela.