Integrar sistema de controle de piscina ao Home Assistant

Boa noite a todos. Estou procurando uma forma de integrar um sistema de controle da piscina ao Home Assistant. De forma nativa o sistema suporta a Alexa, gostaria de levar ao HASS para depois levar ao HomeKit. Alguém tem alguma experiencia ou pode auxiliar com algum comentário?

O dispositivo que gostaria de integrar é o Tholz Smart
https://tholz.com.br/linha-smart-tholz/

Agradeço a atenção de todos, parabéns pela comunidade.

ABS

Cara, caí de gaiato aqui sem querer.
Pelo que eu entendi, seu termostato conecta no Wi-Fi e aí o app do celular se conecta com ele via rede.
Situação similar à do meu aquecedor Rinnai.
Minha sugestão é usar um proxy, tipo Charles Proxy ou um Wireshark para inspecionar os pacotes de rede e ver como o celular conversa com o termostato.
Aí vc consegue replicar as chamadas via node-red pra testar os fluxos. Depois da pra criar a sua integração no HA L, baseado nos fluxos do Node-Red.
Eu tava fazendo isso pro meu aquecedor, mas peguei um projeto brabo aqui e não consigo terminar haha
Mas consegui integrar via node-red.
Acho que esse é o caminho pra você.
Infelizmente eu não consigo te ajudar muito, mas se procurar uns vídeos no YouTube de como instalar e usar o Wireshark vc acha muita coisa.

Cara, to tentando fazer a mesma coisa no meu aquecedor Rinnai, mas entrei em looping.
Voce parou , mas conseguiu fazer algo com o node-red?

Cara, injetando pelo node-red ele funciona bem demais.
Aí eu tinha usado um node que cria uma entity no HA. Funcionou super bem por um tempo, até consegui integrar com o HomeKit.
Mas literalmente do nada, o HA parou de reconhecer essas entities.
Aí eu comecei a escrever a integração e parei.

Cara, seguinte, eu arrumei aqui.
Vou te passar o passo a passo do que fazer depois vc me fala se funcionou.

No node-red, o flow é esse:

[{"id":"c6a16e366232914c","type":"tab","label":"Flow 3","disabled":false,"info":"","env":[]},{"id":"f9d0e8a3e78412e1","type":"inject","z":"c6a16e366232914c","name":"Bus","props":[{"p":"mainUrl","v":"rinnai_ip","vt":"env"},{"p":"service","v":"bus","vt":"str"}],"repeat":"3","crontab":"","once":true,"onceDelay":"","topic":"","x":1190,"y":120,"wires":[["9e8f28212af955f2"]]},{"id":"9e8f28212af955f2","type":"http request","z":"c6a16e366232914c","name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"{{{mainUrl}}}/{{{service}}}","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1390,"y":320,"wires":[["0b85ad1657e4bf84"]]},{"id":"655d85e6a0c6df78","type":"split","z":"c6a16e366232914c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":1690,"y":100,"wires":[["8af3122a9d7e64a2"]]},{"id":"8af3122a9d7e64a2","type":"join","z":"c6a16e366232914c","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1850,"y":100,"wires":[["3114c998e397075a"]]},{"id":"3114c998e397075a","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"payload1.status","pt":"msg","to":"payload[0]","tot":"msg"},{"t":"set","p":"payload1.temperature","pt":"msg","to":"$sum([$number(payload[18]), 32])\t","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"payload1","tot":"msg"},{"t":"delete","p":"payload1","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":2020,"y":100,"wires":[["5dd8fc16792fa0b8","b2315031ba809c4e"]]},{"id":"5dd8fc16792fa0b8","type":"ha-entity","z":"c6a16e366232914c","name":"Aquecedor Temp","server":"a858c23e.2b1cb","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":""},{"property":"device_class","value":"temperature"},{"property":"icon","value":""},{"property":"unit_of_measurement","value":"°C"},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload.temperature","stateType":"msg","attributes":[],"resend":true,"outputLocation":"payload","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":2230,"y":180,"wires":[[]]},{"id":"346b351d087cb70e","type":"ha-entity","z":"c6a16e366232914c","name":"Aquecedor Status","server":"a858c23e.2b1cb","version":2,"debugenabled":false,"outputs":1,"entityType":"sensor","config":[{"property":"name","value":""},{"property":"device_class","value":""},{"property":"icon","value":""},{"property":"unit_of_measurement","value":""},{"property":"state_class","value":""},{"property":"last_reset","value":""}],"state":"payload","stateType":"msg","attributes":[],"resend":true,"outputLocation":"payload","outputLocationType":"none","inputOverride":"allow","outputOnStateChange":false,"outputPayload":"","outputPayloadType":"str","x":2230,"y":240,"wires":[[]]},{"id":"b2315031ba809c4e","type":"switch","z":"c6a16e366232914c","name":"","property":"payload.status","propertyType":"msg","rules":[{"t":"eq","v":"11","vt":"num"},{"t":"eq","v":"41","vt":"num"},{"t":"eq","v":"43","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":1770,"y":240,"wires":[["7c0c522570201ceb"],["d552dfb6a5d31a67"],["445c51ed3ba6bc98"]]},{"id":"7c0c522570201ceb","type":"change","z":"c6a16e366232914c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"Off","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1980,"y":200,"wires":[["346b351d087cb70e"]]},{"id":"d552dfb6a5d31a67","type":"change","z":"c6a16e366232914c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"On","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1980,"y":240,"wires":[["346b351d087cb70e"]]},{"id":"445c51ed3ba6bc98","type":"change","z":"c6a16e366232914c","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"In use","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1980,"y":280,"wires":[["346b351d087cb70e"]]},{"id":"a777e18f6e7730d9","type":"while-loop","z":"c6a16e366232914c","name":"","condi":"msg.data == msg.target","limit":true,"limitTime":"10","time":"wlc72221c62a3b4ac5","timeType":"msg","x":650,"y":400,"wires":[["4763f33d8049844a"],["676a17a255e9ef05"]]},{"id":"0c9f71013774594c","type":"inject","z":"c6a16e366232914c","name":"Set 38","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"str","x":70,"y":400,"wires":[["45f2c6d0826dca35"]]},{"id":"e4327123c9a9725c","type":"api-current-state","z":"c6a16e366232914c","name":"Aquecedor Temp","server":"a858c23e.2b1cb","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.nodered_9ee34e62e352cadf","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"data","propertyType":"msg","value":"","valueType":"entityState"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":390,"y":400,"wires":[["a777e18f6e7730d9"]]},{"id":"6bf702c9b55b4854","type":"delay","z":"c6a16e366232914c","name":"","pauseType":"delay","timeout":"0.5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":730,"y":520,"wires":[["e4327123c9a9725c"]]},{"id":"4763f33d8049844a","type":"switch","z":"c6a16e366232914c","name":"","property":"data","propertyType":"msg","rules":[{"t":"lt","v":"target","vt":"msg"},{"t":"gt","v":"target","vt":"msg"}],"checkall":"true","repair":false,"outputs":2,"x":870,"y":400,"wires":[["82e34fd3db0b1874"],["b9c0f249abeffae0"]]},{"id":"0b85ad1657e4bf84","type":"switch","z":"c6a16e366232914c","name":"","property":"statusCode","propertyType":"msg","rules":[{"t":"neq","v":"200","vt":"num"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1550,"y":320,"wires":[[],["655d85e6a0c6df78","b045c2751448d682"]]},{"id":"3b936c37b886ccfb","type":"http request","z":"c6a16e366232914c","name":"Set priority","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://{{{mainUrl}}}/ip:{{{selfIp}}}:pri","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":870,"y":760,"wires":[["e4327123c9a9725c"]]},{"id":"ca72e65e65af3549","type":"inject","z":"c6a16e366232914c","name":"Set 39","props":[{"p":"target","v":"39","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":500,"wires":[["ffb0fd5679ce2509"]]},{"id":"d9529dfb36b2c0d0","type":"inject","z":"c6a16e366232914c","name":"Set 40","props":[{"p":"target","v":"40","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":600,"wires":[["cf621692e6ea8d60"]]},{"id":"acf2a3b3620a354c","type":"inject","z":"c6a16e366232914c","name":"Set 41","props":[{"p":"target","v":"41","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":700,"wires":[["0eb972b7f05e271c"]]},{"id":"201c59676d55b4ed","type":"inject","z":"c6a16e366232914c","name":"Set 42","props":[{"p":"target","v":"42","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":800,"wires":[["218d5d36458c9f21"]]},{"id":"7892a5b614d732a4","type":"inject","z":"c6a16e366232914c","name":"Set 43","props":[{"p":"target","v":"43","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":900,"wires":[["f56b79b3cecb669c"]]},{"id":"31830b1a9a1bebfb","type":"inject","z":"c6a16e366232914c","name":"Set 44","props":[{"p":"target","v":"44","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":70,"y":1000,"wires":[["9beac9771cc009b8"]]},{"id":"45f2c6d0826dca35","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"38","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":480,"wires":[["a483af333b82b734"]]},{"id":"ffb0fd5679ce2509","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"39","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":540,"wires":[["a483af333b82b734"]]},{"id":"cf621692e6ea8d60","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"40","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":620,"wires":[["a483af333b82b734"]]},{"id":"0eb972b7f05e271c","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"41","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":700,"wires":[["a483af333b82b734"]]},{"id":"218d5d36458c9f21","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"42","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":800,"wires":[["a483af333b82b734"]]},{"id":"f56b79b3cecb669c","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"43","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":880,"wires":[["a483af333b82b734"]]},{"id":"9beac9771cc009b8","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"target","pt":"msg","to":"44","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":980,"wires":[["a483af333b82b734"]]},{"id":"4ee7f99a8b64649a","type":"inject","z":"c6a16e366232914c","name":"Decrease","props":[{"p":"mainUrl","v":"rinnai_ip","vt":"env"},{"p":"service","v":"dec","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","x":1200,"y":160,"wires":[["9e8f28212af955f2"]]},{"id":"3f0dfad06456c9b3","type":"inject","z":"c6a16e366232914c","name":"Increase","props":[{"p":"mainUrl","v":"rinnai_ip","vt":"env"},{"p":"service","v":"inc","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","x":1200,"y":200,"wires":[["9e8f28212af955f2"]]},{"id":"88773d91cfd34964","type":"inject","z":"c6a16e366232914c","name":"On/Off","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payload":"0","payloadType":"str","x":1010,"y":240,"wires":[["ddb2a9476a2d03fc"]]},{"id":"a483af333b82b734","type":"change","z":"c6a16e366232914c","name":"","rules":[{"t":"set","p":"mainUrl","pt":"msg","to":"rinnai_ip","tot":"env"},{"t":"set","p":"selfIp","pt":"msg","to":"self_ip","tot":"env"}],"action":"","property":"","from":"","to":"","reg":false,"x":680,"y":760,"wires":[["3b936c37b886ccfb"]]},{"id":"82e34fd3db0b1874","type":"change","z":"c6a16e366232914c","name":"Increase","rules":[{"t":"set","p":"service","pt":"msg","to":"inc","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":360,"wires":[["9e8f28212af955f2"]]},{"id":"b9c0f249abeffae0","type":"change","z":"c6a16e366232914c","name":"Decrease","rules":[{"t":"set","p":"service","pt":"msg","to":"dec","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1020,"y":440,"wires":[["9e8f28212af955f2"]]},{"id":"b045c2751448d682","type":"switch","z":"c6a16e366232914c","name":"","property":"target","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","repair":false,"outputs":1,"x":1550,"y":420,"wires":[["6bf702c9b55b4854"]]},{"id":"676a17a255e9ef05","type":"http request","z":"c6a16e366232914c","name":"de-Set priority","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://{{{mainUrl}}}/ip:null:pri","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":1000,"y":540,"wires":[[]]},{"id":"5c1894be617a49f9","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 39","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_39","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":540,"wires":[["ffb0fd5679ce2509"]]},{"id":"7983fce76c4722d7","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 38","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_38","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":440,"wires":[["45f2c6d0826dca35"]]},{"id":"18ae1998c631becd","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 40","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_40","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":640,"wires":[["cf621692e6ea8d60"]]},{"id":"4b8e50f97cc9e338","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 41","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_41","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":740,"wires":[["0eb972b7f05e271c"]]},{"id":"ac5f7124d1c4b304","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 42","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_42","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":840,"wires":[["218d5d36458c9f21"]]},{"id":"9a4e270bda7ea8ae","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 43","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_43","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":940,"wires":[["f56b79b3cecb669c"]]},{"id":"7c9611f4eda53400","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor 44","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_44","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":70,"y":1040,"wires":[["9beac9771cc009b8"]]},{"id":"4fc23b740964a48d","type":"server-state-changed","z":"c6a16e366232914c","name":"Aquecedor On/Off","server":"a858c23e.2b1cb","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_on_off","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"0","valueType":"str"}],"x":970,"y":280,"wires":[["ddb2a9476a2d03fc"]]},{"id":"ddb2a9476a2d03fc","type":"change","z":"c6a16e366232914c","name":"Change","rules":[{"t":"set","p":"mainUrl","pt":"msg","to":"rinnai_ip","tot":"env"},{"t":"set","p":"service","pt":"msg","to":"lig","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1200,"y":260,"wires":[["9e8f28212af955f2"]]},{"id":"a858c23e.2b1cb","type":"server","name":"Home Assistant","version":4,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m"}]

Vc vai ter que adicionar duas variáveis de ambiente rinnai_ip que vai ser o IP do aquecedor e self_ip que é o IP da máquina que está o node-red.

Esse flow tem dependência do pacote node-red-contrib-loop-processing então tem que instalar ele também.
Tem um cara aí que é a temperatura, chama Aquecedor Temp e rola depois do set priority. Você vai ter que ver qual é a entity certinha no seu HA. Pra isso, tem que ter a integração do node-red instalada (não só o add-on) aí vai ser sensor.nodered_{alguma coisa}.

Agora do lado do HA vc vai nos helpers e vai criar os helpers que vc quer. No meu caso, eu não queria ficar apertando botão pra aumentar e diminuir temperatura então eu criei botões do 38 ao 44, que são as temperaturas que usamos aqui em casa. Vai lá e cria botões chamados Aquecedor 38/Aquecedor 39/Aquecedor... - pra esse flow funcionar tem que criar do 38 ao 44.
Tem o botão de ligar e desligar que chama Aquecedor On/Offque tem que criar tbm.

Agora pra integrar com o HomeKit se vc quiser, é só selecionar o tipo Input Button e escolher as entities dos botões, eles vão aparecer como switches.
O que eu mais uso aí nesse caso é por voz e como os HomePods são em inglês é só falar “Hey Siri, Acuecedor 39” e voilá.

Eu fiz dessa forma pq aí desenhei uma interface do Nextion, pro NSPanel que eu tenho os botões de 38 a 44 e consigo selecionar antes de entrar no banho, ficou show.

Parece complicado, mas uma vez que vc coloca pra funcionar fica legal. Agora eu preciso de tempo pra terminar a integração que eu tô fazendo, pro HA reconhecer ele direto como Water Heater, sem ter que fazer essa salada toda pelo node-red. Mas bebê de 6 meses e um projeto pra entregar até o fim do ano, não estão me ajudando hahaha

Para o @rafael_rosa se vc ver o flow do node-red e fizer o que eu falei de usar um proxy, acho que só mudar o IP, tirar essa parte da priority eye deve ser bem particular do Rinnai, e formatar as http requests do jeito que o seu sistema funciona, vc vai ter as mesmas funcionalidades.

Qualquer coisa chamem aqui, se quiser @snake abre um novo tópico pro Rinnai e a gente continua por lá. Eu preciso subir o código da integração que eu comecei no GitHub tbm, de repente alguém termina ele haha

3 curtidas

@asekijima
Parabens.
Belo fluxo.
Importei ele pro meu node-red e o fluxo é bem interessante, parabens!

Vou ver com mais calma depois.
Tenho projetos pra entregar tambem e ta bem corrido.

E parabens pelo bebe.
Depois que entender com mais calma esse fluxo, eu abro um topico.
Obrigado

1 curtida

Primeiramente muito obrigado por todo o conhecimento técnico no assunto. Será que conseguiríamos fechar um valor para vc me auxiliar com o desenvolvimento desse projeto? Vou adquirir esse sistema com a intenção de integrar com HOMEKIT, caso consiga me ajudar me passe um numero de contato que alinhamos. Grande Abs e obrigado!!

Aproveitando o Topico XD

Eu tambem tenho aquecimento solar da THOLZ mas acho que o meu não tem wifi.
Então pergunto aos confrades caso eu troque recomendam algum ? lembrando que preciso de um que suporte trocador de calor ( aquecimento solar ) ele tem entrada pra 2 sensores ( temp da piscina e temp em cima do telhado )

Obrigado !

A ideia era converter o Tholz, mas estou quase seguindo por outro caminho. Queria ter o termômetro, aquecedor, e a bomba da hidromassagem no sistema. Mas infelizmente está difícil hahahahaha @Chericoni

To achando que a nossa saida será um NodeMCU ou ESP mesmo, este tipo de função não existe pronto …

Olha que engraçado. Compramos uma casa agora que tem um aquecedor solar com boiler, com controlador… Da Tohlz hahahaha
Mas não é smart, é o normal, com uma tela touch.
Eu achei ele complicado de mexer, mas por enquanto ele vai ficar lá.
Só que agora minha esposa inventou que quer aquecedor solar na piscina tbm. Tô debulhando aqui o ESPHome esse fds. Vou comprar uns sensores de temperatura pra testar fds que vem.
Mas achei uns projetos interessantes que talvez dê pra usar algumas coisas.
Eu tô procurando uma boa opção de ESP32 com ethernet, acho que achei uma aqui, uma tal de LILYGO que alega ter os 15 GPIO disponíveis.
Acho que é o suficiente pra montar um controlador legal para bomba/filtro e aquecedor solar, com display, um módulo de backup de tempo e uns botões.
A ideia é um controlador que dependa zero do HA, mas que seja integrável.

Esses são os dois projetos que eu vou me inspirar:

Boa tarde. Comprei o sistema completo de aquecimento e filtro, iluminação, etc… para a piscina e tbm para aquecedor solar do boiler da tholz. São desse modelo novo com smart connect. Falei com pessoal da tholz e eles não pensam em disponibilizar o sistema para o homekit. Uso homekit na minha casa, e tenho o homebridge para dispositivos não nativos. Minha questão eh, alguém tem conhecimento para criar o plug-in do sistema da tholz pra o homebridge. Tenho interesse em contratar.

Cai aqui pq eh o unico q existe sobre Tholz. Eles realmente nao devem disponibilizar uma API ou algo quer permita consultar ou adicionar os sensores nativos. Ainda não analisei os pacotes da app mobile com Proxy. Mas consegui integrar no HA via sensor IR e cenas que são acionadas no Front End do HA, e controlo os estados todos no HA com variáveis booleanas. Temperaturas nao sao possiveis, somente pos analise do app. Se alguem precisar dos scripts posto aq.

Acredito que a integracao como vc quer nao seja possivel, nao sem algum acesso ao smart connect. Estou estudando isso e quem sabe em breve nao consigamos algo que nao seja uma gambiarra rs

boa tarde, tenho um destes tambem ,
pelo tamanho acho que consigo colocar um esp32 nele e fazer a leitura dos sensores e de quando a bomba esta ligada.
eu só posso usar este tipo porque o lugar onde fica o controlador é uma caixa 4x4 e não cabe outro modelo.
b_controlador-diferencial-de-temperatura-mmz1304n-p743

É bem tranquilo substituir ele completamente por um esp, li o manual de um controlador de aquecedor solar uma vez que explicava extamente o funcionamento
não lembro extamente todos detalhes mas era algo do tipo

Digamos que T1 é temperatura da piscina, T2 é temperatura da água dentro do aquecedor. Ai TA é temperatura alvo, e TD é um delta de temperatura mínimo pra ele acionar (que você específica).

O comportamento base é
Se T1 < TA e T2-T1>TD aciona bomba
Essa segunda condição é porque não adianta acionar bomba se não tem sol suficiente pra esquentar água.

Daí ele também aciona bomba se T2 > Tmax ou T2 < TMin. Que são as temperaturas de operação do aquecedor pra evitar que congele água dentro da mangueira ou estrague com água muito quente.

bom dia, como não quero trocar o controlador que ja esta instalado e funcionando muito bem , fiz um pequeno projeto usando esp32 coloquei adicionei um sensor DS18b20 para mostrar a temperatura atual da piscina e adicionei tambem um ina219 ligado internamente ao controlador Tholz desta forma consigo saber quando a bomba do aquecedor solar esta ligada.
montei um dahsboard .
fiz um video do dashboard como esta funcionando.
desculpe de como esta este é o meu primeiro video .
https://www.canva.com/design/DAFoneCYtC0/WRGV-yUCt_1BQJb2NtHVAg/edit?utm_content=DAFoneCYtC0&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton

Olá Rafael, tenho um smart pool também e estou buscando integrar no HA. Você conseguiu algo até agora?
Abs

Consagrados, alguém conseguiu, por ventura, integrar o Smart da Tholz no HA?
Por hora, consigo enviar os comandos pelo frontend através de um controle remoto RF que copiou o controle da Tholz. No entanto, dessa forma, não tenho acesso ao estado dos sensores para saber se estão ligados ou não.