Controlar Aquecedor de Gás (boiler) Rinnai - WIFI

EQUIPAMENTOS SUPORTADOS

Modelos compatíveis: E17, E21, E27 e E33 (através de módulo wi-fi instalado a parte)

Não sei se existe modelos com wi-fi já de fábrica, caso tenham façam o teste deve ser a mesma coisa.

Antes de começar, agradecimento especial para o @davidalben que foi quem conseguiu descobrir como vem os dados e como fazer o acionamento através home assistant.

Como funciona:

  • Instalar o módulo wi-fi
  • Instalar o aplicativo Rinnai e configurar a rede wireless
  • Descobrir o IP que o aquecedor pegou

Nesse exemplo iremos utilizar o meu aquecedor (Rinnai E17), IP 192.168.0.123.

Todas as informações do aquecedor estão publicadas no IP/bus, http://192.168.0.123/bus. São de onde os dados vem para criar os sensores.

Vamos chamar cada um de col, sendo o primeiro col0. Até o momento descobrimos que as seguintes colunas são referentes a:

#   "Status ligado/desligado/stand-by: $col0"
#   "Erros do sistma: $col01"
#   "Em uso: $col02"
#   "Número de acionamentos: $col03"
#   "Temperatura de entrata: $col10"
#   "Temperatura de saída: $col11"
#   "Vazão mínima p/ acionamento: $col13"
#   "Vazão mínima p/ desligamento: $col14"
#   "Temperatura setada: $col15"
#   "Endereço IP: $col16"
#   "Data Firmware: $col22"
#   "MAC Address: $col25"
#   "Sinal wi-fi: $col37"
#   "Horas de combustão: $col04"
#   "Horas de stand-by: $col05"
#   "Número de série: $col19"
#   "Potência máxima (kcal/min): $col09"
#   "Fluxo real: $col12"
#   "Rotação da ventoinha: $col07"
#   "Corrente: $col08"

Existe 4 comandos, são possíveis de fazer via navegador acessando somente o link:

Com essas informações criei um fluxo no node-red, para criar os sensores. Além dos que vieram das informações, criei outro com base no fluxo de água para saber quantos litros foram gastos na última vez que o aquecedor “ligou”, segue imagem dos sensores:

**

CÓDIGO NODERED

**

[{"id":"6bccceffbf03f205","type":"tab","label":"-Aquecedor","disabled":false,"info":"","env":[]},{"id":"11377a49ab0dd16c","type":"group","z":"6bccceffbf03f205","style":{"stroke":"#3a3a3a","stroke-opacity":"1","fill":"#1e1e1e","fill-opacity":"0.5","label":true,"label-position":"nw","color":"#cccccc"},"nodes":["b53a0e69c71032f4","9ffc1d89401fc5f4","7f510259700499c1","808aa2331daa5d0c","2ce64cf39002710e","5e58c77d5c4269af","c2f34eac169e2a6d","3b6ba41fad2d9443","fc4c7af6bf0bbf57","9fcf98bec86da9ef","f5d766f9a5f160a6","682b7c3689643889","49ca67f67bc9f469","139716273152f7df","2faf887b2663c0cd","d96714933d6c3005","4508ab72cacf22e9","8570dfa3ec32dc76","5557e704e7f71ef8","9fa20095c74f2e7c","ab203e8712bee4a6"],"x":74,"y":499,"w":892,"h":322},{"id":"ffba20906ec8d1f1","type":"group","z":"6bccceffbf03f205","style":{"stroke":"#3a3a3a","stroke-opacity":"1","fill":"#1e1e1e","fill-opacity":"0.5","label":true,"label-position":"nw","color":"#cccccc"},"nodes":["1081cd28893374c2","53fee50beef568ab","6853591e7cb5204b","99fe0131613b7443","06e65439dff18501","ca430d9a3c59768b","b50036ac01903411","721483cbb3e537fe","fc130b5361929011","600d16fd7238bb13","a74d8fd2b0e72174","9fb566d0656a4c6a","478ed976d1cc6dc8","f2fb03d9bf414499","09992d6cadf015b0","853ec97e34464eed","0120aeb83fd7982c","b2df083e64981204","bb8ab8b613f6393d","f40e4f8b2d871e6a","e683d6b4991e5c0b","eb717f96607c38f2","2527c294daab7639","7fac43b3263a1cdb","d78290de85229c80","17c442e4c6dcffd0","6f6782e9e93a2782","9b7a6a109e0e6272","8f3c0d3a7784b084","3bf1c77d4d9f5665","1b5ec4d6bd3e89a9"],"x":74,"y":59,"w":1752,"h":387},{"id":"3bf1c77d4d9f5665","type":"junction","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","x":1400,"y":420,"wires":[[]]},{"id":"9b7a6a109e0e6272","type":"junction","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","x":480,"y":360,"wires":[["b2df083e64981204"]]},{"id":"8f3c0d3a7784b084","type":"junction","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","x":1680,"y":180,"wires":[["721483cbb3e537fe"]]},{"id":"1b5ec4d6bd3e89a9","type":"junction","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","x":1280,"y":360,"wires":[["0120aeb83fd7982c"]]},{"id":"1081cd28893374c2","type":"inject","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Atualiza sensor a cada 10s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":240,"y":100,"wires":[["53fee50beef568ab"]]},{"id":"53fee50beef568ab","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para pegar informações","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/bus","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":880,"y":100,"wires":[["06e65439dff18501"]]},{"id":"6853591e7cb5204b","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para aumentar temp","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/inc","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":530,"y":140,"wires":[["600d16fd7238bb13"]]},{"id":"99fe0131613b7443","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para diminuir temp","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/dec","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":520,"y":200,"wires":[["600d16fd7238bb13"]]},{"id":"06e65439dff18501","type":"split","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":1090,"y":100,"wires":[["ca430d9a3c59768b"]]},{"id":"ca430d9a3c59768b","type":"join","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","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":1210,"y":100,"wires":[["853ec97e34464eed","09992d6cadf015b0","f2fb03d9bf414499","b50036ac01903411"]]},{"id":"b50036ac01903411","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor geral","func":"\nif (msg.payload[0] == 11){\n    msg.payload[0] = \"desligado\"\n}\nif (msg.payload[0] == 41 && msg.payload[2] == 0) {\n    msg.payload[0] = \"stand-by\"\n}\nif (msg.payload[0] == 41 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 21 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 42 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 43 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\n//Tratamento dos erros \nif (msg.payload[1] == 10) {\n    msg.payload[1] = \"Código: 10 - Problema na ventoinha ou obstrução no fluxo\"\n\n}\nif (msg.payload[1] == 11) {\n    msg.payload[1] = \"Código: 11 - Ao ligar não acende, falta de gás após 3x\"\n}\nif (msg.payload[1] == 12) {\n    msg.payload[1] = \"Código: 12 - Falta de gás em uso\"\n}\nif (msg.payload[1] == 14) {\n    msg.payload[1] = \"Código: 14 - Fusível ou termostato rompido\"\n}\nif (msg.payload[1] == 32) {\n    msg.payload[1] = \"Código: 32 - Termistor com problema\"\n}\nif (msg.payload[1] == 52) {\n    msg.payload[1] = \"Código: 52 - Conector solto da válvula moduladora de chama (POV)\"\n}\nif (msg.payload[1] == 61) {\n    msg.payload[1] = \"Código: 61 - Conector da ventoinha solto\"\n}\nif (msg.payload[1] == 72) {\n    msg.payload[1] = \"Código: 72 - Sensor de chama com problema \"\n}\nelse {\n    msg.payload[1] = \"OK\"\n}\n\n\n// Sensor geral\nmsg.entity_id = 'sensor.aquecedor_gas'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[0],\n        attributes: {\n            funcionamento: msg.payload[1],\n            vazao_minima_para_acionamento: msg.payload[13],\n            vazao_minima_para_desligamento: msg.payload[14],\n            data_firmware: msg.payload[22],\n            horas_de_combustao: msg.payload[4],\n            potencia_maxima_kcal_min: msg.payload[9],\n            rotacao_da_ventoinha: msg.payload[7],\n            corrente: msg.payload[8],\n            horas_de_stand_by: msg.payload[5],\n            numero_de_serie: msg.payload[19],\n            icon: \"mdi:information\",\n            friendly_name: \"Aquecedor Rinnai E17 Informações\",\n        }\n    }\n};\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1510,"y":180,"wires":[["8f3c0d3a7784b084"]]},{"id":"721483cbb3e537fe","type":"ha-api","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","server":"db1ab0af.caa65","version":1,"debugenabled":false,"protocol":"http","method":"post","path":"/api/states/{{entity_id}}","data":"","dataType":"json","responseType":"json","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"results"}],"x":1750,"y":180,"wires":[[]]},{"id":"fc130b5361929011","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para ligar/desligar","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/lig","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":520,"y":260,"wires":[["600d16fd7238bb13"]]},{"id":"600d16fd7238bb13","type":"delay","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":760,"y":140,"wires":[["53fee50beef568ab"]]},{"id":"a74d8fd2b0e72174","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Aumentar temperatura","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_aumentar_temperatura","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":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":220,"y":140,"wires":[["6853591e7cb5204b"]]},{"id":"9fb566d0656a4c6a","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Diminui temperatura","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_diminuir_temperatura","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":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":210,"y":200,"wires":[["99fe0131613b7443"]]},{"id":"478ed976d1cc6dc8","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Liga / Desliga aquecedor","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.aquecedor_ligar_desligar","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":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":230,"y":260,"wires":[["fc130b5361929011"]]},{"id":"f2fb03d9bf414499","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor temparura","func":"\nmsg.payload[15] = msg.payload[15].slice(0, -2);\nmsg.payload[10] = msg.payload[10].slice(0, -2);\nmsg.payload[11] = msg.payload[11].slice(0, -2);\n\nmsg.entity_id = 'sensor.aquecedor_gas_temperatura'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[15],\n        attributes: {\n            temperatura_de_entrada: msg.payload[10],\n            temperatura_de_saida: msg.payload[11],\n            state_class: \"measurement\",\n            unit_of_measurement: \"°C\",\n            device_class: \"temperature\",\n            icon: \"mdi:water-boiler\",\n            friendly_name: \"Aquecedor Rinnai E17 Temperatura\",\n        }\n    }\n};\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1490,"y":140,"wires":[["8f3c0d3a7784b084"]]},{"id":"09992d6cadf015b0","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor network","func":"\nmsg.entity_id = 'sensor.aquecedor_gas_network'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[37],\n        attributes: {\n            state_class: \"measurement\",\n            unit_of_measurement: \"dBm\",\n            device_class: \"signal_strength\",\n            ip: msg.payload[16],\n            mac: msg.payload[25],\n            icon: \"mdi:wifi\",\n            friendly_name: \"Aquecedor Rinnai E17 Network\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1500,"y":220,"wires":[["8f3c0d3a7784b084"]]},{"id":"853ec97e34464eed","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor do fluxo de água","func":"\nmsg.payload[12] = msg.payload[12] / 100;\n\nmsg.entity_id = 'sensor.aquecedor_gas_fluxo_de_agua'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[12],\n        attributes: {\n            unit_of_measurement: \"l/m\",\n            device_class: \"flow\",\n            state_class: \"measurement\",\n            icon: \"mdi:water-opacity\",\n            friendly_name: \"Aquecedor Rinnai E17 Fluxo de Água\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1470,"y":100,"wires":[["8f3c0d3a7784b084"]]},{"id":"0120aeb83fd7982c","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor quantos litros último uso","func":"// Sensor litros de água gastos\n\nmsg.entity_id = 'sensor.aquecedor_gas_litros_ultimo'\n\nmsg.payload = {\n    data: {\n        state: msg.payload,\n        attributes: {\n            ultimo_registro: flow.get(\"data\"),\n            tempo_aberto: msg.tempo,\n            unit_of_measurement: \"L\",\n            device_class: \"flow\",\n            state_class: \"measurement\",\n            icon: \"mdi:water-pump\",\n            friendly_name: \"Aquecedor Rinnai E17 Quantidade de Litros Gastos Último Uso\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1450,"y":260,"wires":[["8f3c0d3a7784b084"]]},{"id":"b2df083e64981204","type":"hourglass","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","persistId":"","humanizeLocale":"pt-br","x":560,"y":360,"wires":[["7fac43b3263a1cdb"]]},{"id":"bb8ab8b613f6393d","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"start","rules":[{"t":"set","p":"command","pt":"msg","to":"start","tot":"str"},{"t":"set","p":"status","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":320,"wires":[["9b7a6a109e0e6272","17c442e4c6dcffd0"]]},{"id":"f40e4f8b2d871e6a","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"stop","rules":[{"t":"set","p":"command","pt":"msg","to":"stop","tot":"str"},{"t":"set","p":"status","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":360,"wires":[["eb717f96607c38f2","9b7a6a109e0e6272"]]},{"id":"e683d6b4991e5c0b","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"reset","rules":[{"t":"set","p":"command","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":400,"wires":[["9b7a6a109e0e6272"]]},{"id":"eb717f96607c38f2","type":"delay","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":235,"y":400,"wires":[["e683d6b4991e5c0b"]],"l":false},{"id":"2527c294daab7639","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Fluxo > 0","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.aquecedor_gas_fluxo_de_agua","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"0","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"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_state","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":180,"y":320,"wires":[["bb8ab8b613f6393d"],["f40e4f8b2d871e6a"]]},{"id":"7fac43b3263a1cdb","type":"switch","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"= stop","property":"command","propertyType":"msg","rules":[{"t":"eq","v":"stop","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":690,"y":360,"wires":[["d78290de85229c80"]]},{"id":"d78290de85229c80","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Convertendo os dados","func":"/*var fluxo = flow.get(\"fluxo\")\nvar segundos = msg.elapsed.millis / 1000\nvar minutos = segundos / 60\n\nmsg.minutos = minutos.toFixed(1)\nmsg.fluxo = fluxo\n\nlet litrosGastos = (fluxo * msg.minutos)\n\nlitrosGastos = litrosGastos.toFixed(1)\n\n\nmsg.payload = litrosGastos; */\n\n\n\nvar fluxo = flow.get(\"fluxo\")\nvar segundos = msg.elapsed.millis / 1000\nvar minutos = segundos / 60\n\nmsg.minutos = Math.floor(minutos)\nmsg.segundos = Math.floor((minutos - msg.minutos) * 60)\nmsg.fluxo = fluxo\n\nlet litrosGastos = (fluxo * minutos)\n\nlitrosGastos = litrosGastos.toFixed(1)\n\nmsg.payload = litrosGastos;\n\nmsg.tempo = msg.minutos + \":\" + msg.segundos.toString().padStart(2, '0') + \" min\";\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":360,"wires":[["1b5ec4d6bd3e89a9"]]},{"id":"17c442e4c6dcffd0","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","rules":[{"t":"set","p":"fluxo","pt":"flow","to":"payload_state","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":570,"y":320,"wires":[["6f6782e9e93a2782"]]},{"id":"b53a0e69c71032f4","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":600,"wires":[["7f510259700499c1"]]},{"id":"9ffc1d89401fc5f4","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"bus","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":850,"y":600,"wires":[]},{"id":"7f510259700499c1","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar informações","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/bus","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":400,"y":600,"wires":[["808aa2331daa5d0c"]]},{"id":"808aa2331daa5d0c","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":610,"y":600,"wires":[["2ce64cf39002710e"]]},{"id":"2ce64cf39002710e","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":730,"y":600,"wires":[["9ffc1d89401fc5f4"]]},{"id":"5e58c77d5c4269af","type":"comment","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Dev","info":"#   \"Status ligado/desligado/stand-by: $col0\"\n#   \"Erros do sistma: $col01\"\n#   \"Número de acionamentos: $col03\"\n#   \"Temperatura de entrata: $col10\"\n#   \"Temperatura de saída: $col11\"\n#   \"Vazão mínima p/ acionamento: $col13\"\n#   \"Vazão mínima p/ desligamento: $col14\"\n#   \"Temperatura setada: $col15\"\n#   \"Endereço IP: $col16\"\n#   \"Data Firmware: $col22\"\n#   \"MAC Address: $col25\"\n#   \"Sinal wi-fi: $col37\"\n#   \"Horas de combustão: $col04\"\n#   \"Horas de stand-by: $col05\"\n#   \"Número de série: $col19\"\n#   \"Potência máxima (kcal/min): $col09\"\n#   \"Fluxo real: $col12\"\n#   \"Rotação da ventoinha: $col07\"\n#   \"Corrente: $col08\"\n\n# http://192.168.0.110/historico\n# http://192.168.0.110/consumo\n# http://192.168.0.110/tela_\n# http://192.168.0.110/erros","x":150,"y":540,"wires":[]},{"id":"c2f34eac169e2a6d","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":660,"wires":[["fc4c7af6bf0bbf57"]]},{"id":"3b6ba41fad2d9443","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"historico","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":860,"y":660,"wires":[]},{"id":"fc4c7af6bf0bbf57","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar historico","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/historico","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":390,"y":660,"wires":[["9fcf98bec86da9ef"]]},{"id":"9fcf98bec86da9ef","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":610,"y":660,"wires":[["f5d766f9a5f160a6"]]},{"id":"f5d766f9a5f160a6","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":730,"y":660,"wires":[["3b6ba41fad2d9443"]]},{"id":"682b7c3689643889","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":720,"wires":[["139716273152f7df"]]},{"id":"49ca67f67bc9f469","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"consumo","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":860,"y":720,"wires":[]},{"id":"139716273152f7df","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar consumo","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/consumo","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":390,"y":720,"wires":[["2faf887b2663c0cd"]]},{"id":"2faf887b2663c0cd","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":610,"y":720,"wires":[["d96714933d6c3005"]]},{"id":"d96714933d6c3005","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":730,"y":720,"wires":[["49ca67f67bc9f469"]]},{"id":"4508ab72cacf22e9","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":780,"wires":[["5557e704e7f71ef8"]]},{"id":"8570dfa3ec32dc76","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"erros","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":850,"y":780,"wires":[]},{"id":"5557e704e7f71ef8","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar erros","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/erros","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":380,"y":780,"wires":[["9fa20095c74f2e7c"]]},{"id":"9fa20095c74f2e7c","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":610,"y":780,"wires":[["ab203e8712bee4a6"]]},{"id":"ab203e8712bee4a6","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":730,"y":780,"wires":[["8570dfa3ec32dc76"]]},{"id":"6f6782e9e93a2782","type":"moment","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","topic":"","input":"","inputType":"msg","inTz":"America/Sao_Paulo","adjAmount":0,"adjType":"days","adjDir":"add","format":"DD/MM/YYYY HH:mm","locale":"C","output":"data","outputType":"flow","outTz":"America/Sao_Paulo","x":760,"y":320,"wires":[[]]},{"id":"db1ab0af.caa65","type":"server","name":"Home Assistant","version":5,"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","enableGlobalContextStore":true}]

Necessário criar 3 botões também:













O Davi utilizou diretamente via home assistant, segue os sensores e comandos criados por ele:

Configuration:

rest_command:
  aquecedor_toggle:
    url: http://IP/lig
    method: get
  aquecedor_down:
    url: http://IP/dec
    method: get
  aquecedor_up:
    url: http://IP/inc
    method: get

Scripts:

aquecedor_poweron:
  sequence:
  - condition: state
    entity_id: sensor.aquecedor
    state: 'off'
  - service: rest_command.aquecedor_toggle
aquecedor_poweroff:
  sequence:
  - condition: state
    entity_id: sensor.aquecedor
    state: 'on'
  - service: rest_command.aquecedor_toggle
aquecedor_up:
  sequence:
  - condition: state
    entity_id: sensor.aquecedor
    state: 'on'
  - service: rest_command.aquecedor_up
aquecedor_down:
  sequence:
  - condition: state
    entity_id: sensor.aquecedor
    state: 'on'
  - service: rest_command.aquecedor_down

Sensor:

template:
  - sensor:
    - name: aquecedor
      state: >
          {% if state_attr('sensor.aquecedor_bus','status') > '40' %}
            on
          {% else %}
            off
          {% endif %}
      attributes:
        temperature: >
          {% set temp = state_attr('sensor.aquecedor_bus','temp_set') | multiply(0.01) | int %}
          {{ temp }}
        temp_ent: >
          {% set temp = state_attr('sensor.aquecedor_bus','temp_ent') | multiply(0.01) | round(2) %}
          {{ temp }}
        temp_sai: >
          {% set temp = state_attr('sensor.aquecedor_bus','temp_sai') | multiply(0.01) | round(2) %}
          {{ temp }}
        fluxo: >
          {% set temp = state_attr('sensor.aquecedor_bus','fluxo') | multiply(0.01) | round(2) %}
          {{ temp }}
        status: >
          {% set st = state_attr('sensor.aquecedor_bus','status') %}
          {% if st == '11' %}
            Desligado
          {% elif st == '41' %}
            Stand-by
          {% elif st == '42' %}
            Em uso
          {% elif st == '43' %}
            Em uso
          {% else %}
            Desconhecido: {{ st }}
          {% endif %}

sensor:
  - platform: rest
    resource: http://IP/bus
    unique_id: 84y2814214782642
    name: aquecedor_rest
    value_template: >-
      {% set v = value.split(',')[0] %}
      {{ v }}

Quem tiver esse aquecedor e quiser contribuir com o projeto, seria interessante se pudesse ser feito através do HACS, porém não tenho conhecimentos em programação, mas fico a disposição se quiserem que eu teste.

3 Likes

Obrigado, @kelvinrafaeli, por reunir as informações e compartilhar.

1 Like

sensacional, amais de 1 ano estava procurando uma forma de integrar o meu E27 no HA, fiquei com uma dúvida, o que esse nó hourglass faz? não entendi essa parte do codigo no node reg.

Outro ponto é tem algum exemplo de dashboard para incluir essas informações no HA?

mais uma vez parabéns e obrigado por compartilhar.

outro ponto que eu notei é a vazão mínima e a máxima está como 300 e correto seria 3,00

@gamajunior top né, eu estava com o meu sem módulo até que o Davi mandou no grupo que conseguiu pegar os dados do aquecedor.

O hourglass eu uso ele como uma espécie de cronometro, criei um sensor para ele mostrar o tempo que ficou aberto e sabendo do fluxo por minutos conseguimos calcular quantos litros foram gastos na última abertura, veja como fica:

tempo_aberto vai ser quantos minutos ficou ligado, ultimo_registro a última vez que foi aberto, e o 51.8 é quantos litros foram gastos na última vez aberto.

Caso você não queira fazer esse controle é só excluir o nó inteiro que não irá interferir em nada, mas vc pode utilizar as informações para desligar se passar de tantos litros ou minutos, etc…

Sobre a vazão máxima e mínima, nem mexi, alguns dados para meu controle não são importantes, então eles estão vindo brutos…nesse caso se você deseja ver de forma diferente precisa tratar eles.

Sobre o dashboard no momento nem estou utilizando, fiz somente a automação para quando a temperatura ambiente estiver entre uma faixa ela aumenta ou diminui sozinha, se estiver com erro de falta de gás me avisar.

Mas você pode usar dos 3 botões que mencionei aqui:

image

Desta forma vc pode inserir e fazer o dash que quiser.

1 Like

esta funcionando legal, fiz alguns ajustes pois no meu node red ele não reconhecia o fluxo como numero e a responta estava como NaN, aproveitei e fiz um dash simples com alguns dados basicos

Esse é o código com os ajustes

[{"id":"e61a7a71a1c31efb","type":"tab","label":"Aquecedor","disabled":false,"info":"","env":[]},{"id":"a363168fc5549a22","type":"group","z":"e61a7a71a1c31efb","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["e1460613dbedf4d6","b509f659b74ae42d","1b735b3116100e1b","7f11ad7efa3b8f00","58fddab9483800c0","2c38dcc8d94c8315","d5e8fa59e166f86d","9a7fc7bbcd79d1ff","59eca59bf9d425d8","bb1d35b1a3957e6d","c1eb860e04493bb4"],"x":14,"y":19,"w":1252,"h":342},{"id":"c9f9fa6fbe198c26","type":"group","z":"e61a7a71a1c31efb","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["c8fece9376ee4728","835088c02e5fbf1f","2b302535c9249da3","6607ea6f5f22684d","215765029447547e","285d273cac19578b","e5a9580d6289a508","252423a7862daaa7","1f2384cc142e22b0"],"x":14,"y":379,"w":822,"h":262},{"id":"e8ead804155ef48b","type":"group","z":"e61a7a71a1c31efb","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["6a135697e83d7324","38361bace46e1bb3","97501584fdc0ddcd","3976c284c1cdf6cb","10c575078273b2a4","57f42d50ae54e8da","6b759b7d441bd057","c06c26d359aa97fd","0b71269635672731","cb7815d841f0f046","8adf61b7671b21eb","999d78e76632c6c2","8c67ab728005df55"],"x":14,"y":659,"w":1712,"h":302},{"id":"e1460613dbedf4d6","type":"inject","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Atualiza 10s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":220,"wires":[["b509f659b74ae42d"]]},{"id":"b509f659b74ae42d","type":"http request","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Pega Informações","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.1.210/bus","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":350,"y":220,"wires":[["1b735b3116100e1b"]]},{"id":"c8fece9376ee4728","type":"http request","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Aumentar Temp","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.1.210/inc","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":380,"y":480,"wires":[["6607ea6f5f22684d"]]},{"id":"835088c02e5fbf1f","type":"http request","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Diminuir Temp","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.1.210/dec","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":380,"y":540,"wires":[["6607ea6f5f22684d"]]},{"id":"1b735b3116100e1b","type":"split","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":530,"y":220,"wires":[["7f11ad7efa3b8f00"]]},{"id":"7f11ad7efa3b8f00","type":"join","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","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":670,"y":220,"wires":[["58fddab9483800c0","9a7fc7bbcd79d1ff","59eca59bf9d425d8","bb1d35b1a3957e6d"]]},{"id":"58fddab9483800c0","type":"function","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Cria Sensor - Geral","func":"// Tratamento do status\nif (msg.payload[0] == 11){\n    msg.payload[0] = \"desligado\"\n}\nif (msg.payload[0] == 41 && msg.payload[2] == 0) {\n    msg.payload[0] = \"stand-by\"\n}\nif (msg.payload[0] == 41 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 21 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 42 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 43 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\n//Tratamento dos erros \nif (msg.payload[1] == 12) {\n    msg.payload[1] = \"Código: 12 - Falta de gás em uso\"\n}\nelse {\n    msg.payload[1] = \"OK\"\n}\n\n\n// Sensor geral\nmsg.entity_id = 'sensor.aquecedor_gas'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[0],\n        attributes: {\n            funcionamento: msg.payload[1],\n            vazao_minima_para_acionamento: parseFloat(msg.payload[13] * 0.01).toFixed(2),\n            vazao_minima_para_desligamento: parseFloat(msg.payload[14] * 0.01).toFixed(2),\n            data_firmware: msg.payload[22],\n            horas_de_combustao: msg.payload[4],\n            potencia_maxima_kcal_min: msg.payload[9],\n            rotacao_da_ventoinha: msg.payload[7],\n            corrente: msg.payload[8],\n            horas_de_stand_by: msg.payload[5],\n            numero_de_serie: msg.payload[19],\n            icon: \"mdi:information\",\n            friendly_name: \"COZINHA Aquecedor\",\n        }\n    }\n};\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":180,"wires":[["2c38dcc8d94c8315"]]},{"id":"2c38dcc8d94c8315","type":"ha-api","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"","server":"db1ab0af.caa65","version":1,"debugenabled":false,"protocol":"http","method":"post","path":"/api/states/{{entity_id}}","data":"","dataType":"json","responseType":"json","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"results"}],"x":1190,"y":220,"wires":[[]]},{"id":"2b302535c9249da3","type":"http request","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Liga / Desliga","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.1.210/lig","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":380,"y":600,"wires":[["6607ea6f5f22684d"]]},{"id":"6607ea6f5f22684d","type":"delay","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":680,"y":540,"wires":[["1f2384cc142e22b0"]]},{"id":"215765029447547e","type":"server-state-changed","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Aumenta Temp","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.cozinha_aquecedor_plus","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":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":120,"y":480,"wires":[["c8fece9376ee4728"]]},{"id":"285d273cac19578b","type":"server-state-changed","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Diminui Temp","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.cozinha_aquecedor_minus","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":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":110,"y":540,"wires":[["835088c02e5fbf1f"]]},{"id":"e5a9580d6289a508","type":"server-state-changed","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Liga / Desliga Aquecedor","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.cozinha_aquecedor","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":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":150,"y":600,"wires":[["2b302535c9249da3"]]},{"id":"d5e8fa59e166f86d","type":"comment","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Aquecedor | Cria Entidades","info":"#   \"Status ligado/desligado/stand-by: $col0\"\n#   \"Erros do sistma: $col01\"\n#   \"Número de acionamentos: $col03\"\n#   \"Temperatura de entrata: $col10\"\n#   \"Temperatura de saída: $col11\"\n#   \"Vazão mínima p/ acionamento: $col13\"\n#   \"Vazão mínima p/ desligamento: $col14\"\n#   \"Temperatura setada: $col15\"\n#   \"Endereço IP: $col16\"\n#   \"Data Firmware: $col22\"\n#   \"MAC Address: $col25\"\n#   \"Sinal wi-fi: $col37\"\n#   \"Horas de combustão: $col04\"\n#   \"Horas de stand-by: $col05\"\n#   \"Número de série: $col19\"\n#   \"Potência máxima (kcal/min): $col09\"\n#   \"Fluxo real: $col12\"\n#   \"Rotação da ventoinha: $col07\"\n#   \"Corrente: $col08\"","x":160,"y":60,"wires":[]},{"id":"9a7fc7bbcd79d1ff","type":"function","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Cria Sensor - Temperatura","func":"// Sensor temperatura\nmsg.payload[15] = msg.payload[15].slice(0, -2);\nmsg.payload[10] = msg.payload[10].slice(0, -2);\nmsg.payload[11] = msg.payload[11].slice(0, -2);\n\nmsg.entity_id = 'sensor.aquecedor_gas_temperatura'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[15],\n        attributes: {\n            temperatura_de_entrada: msg.payload[10],\n            temperatura_de_saida: msg.payload[11],\n            state_class: \"measurement\",\n            unit_of_measurement: \"°C\",\n            device_class: \"temperature\",\n            icon: \"mdi:water-boiler\",\n            friendly_name: \"COZINHA Aquecedor - Temperatura\",\n        }\n    }\n};\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":920,"y":120,"wires":[["2c38dcc8d94c8315"]]},{"id":"59eca59bf9d425d8","type":"function","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Cria Sensor - Network","func":"// Sensor network\nmsg.entity_id = 'sensor.aquecedor_gas_network'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[37],\n        attributes: {\n            state_class: \"measurement\",\n            unit_of_measurement: \"dBm\",\n            device_class: \"signal_strength\",\n            ip: msg.payload[16],\n            mac: msg.payload[25],\n            icon: \"mdi:wifi\",\n            friendly_name: \"COZINHA Aquecedor - Network\",\n        }\n    }\n};\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":900,"y":260,"wires":[["2c38dcc8d94c8315"]]},{"id":"bb1d35b1a3957e6d","type":"function","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"Cria Sensor - Fluxo de Água","func":"// Sensor network\n\nmsg.payload[12] = msg.payload[12] / 100;\n\nmsg.entity_id = 'sensor.aquecedor_gas_fluxo_de_agua'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[12],\n        attributes: {\n            unit_of_measurement: \"l/m\",\n            device_class: \"flow\",\n            state_class: \"measurement\",\n            friendly_name: \"COZINHA Aquecedor - Fluxo de Água\",\n        }\n    }\n};\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":920,"y":320,"wires":[["2c38dcc8d94c8315"]]},{"id":"6a135697e83d7324","type":"function","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"Cria Sensor - Litros Gastos Último Uso","func":"// Sensor litros de água gastos\n\nmsg.entity_id = 'sensor.aquecedor_gas_litros_ultimo'\n\nmsg.payload = {\n    data: {\n        state: msg.payload,\n        attributes: {\n            ultimo_registro: msg.data,\n            tempo_aberto: msg.minutos,\n            unit_of_measurement: \"L\",\n            device_class: \"flow\",\n            state_class: \"measurement\",\n            friendly_name: \"COZINHA Aquecedor - Litros Gastos Último Uso\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1410,"y":840,"wires":[["999d78e76632c6c2"]]},{"id":"38361bace46e1bb3","type":"hourglass","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"","persistId":"","humanizeLocale":"pt-br","x":580,"y":840,"wires":[["c06c26d359aa97fd"]]},{"id":"97501584fdc0ddcd","type":"change","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"start","rules":[{"t":"set","p":"command","pt":"msg","to":"start","tot":"str"},{"t":"set","p":"status","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":760,"wires":[["cb7815d841f0f046","38361bace46e1bb3"]]},{"id":"3976c284c1cdf6cb","type":"change","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"stop","rules":[{"t":"set","p":"command","pt":"msg","to":"stop","tot":"str"},{"t":"set","p":"status","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":840,"wires":[["57f42d50ae54e8da","38361bace46e1bb3"]]},{"id":"10c575078273b2a4","type":"change","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"reset","rules":[{"t":"set","p":"command","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":250,"y":920,"wires":[["38361bace46e1bb3"]]},{"id":"57f42d50ae54e8da","type":"delay","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":355,"y":840,"wires":[["10c575078273b2a4"]],"l":false},{"id":"6b759b7d441bd057","type":"server-state-changed","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"Fluxo > 0","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.aquecedor_gas_fluxo_de_agua","entityidfiltertype":"exact","outputinitially":false,"state_type":"num","haltifstate":"0","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"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_state","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":100,"y":800,"wires":[["97501584fdc0ddcd"],["3976c284c1cdf6cb"]]},{"id":"c06c26d359aa97fd","type":"switch","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"stop","property":"command","propertyType":"msg","rules":[{"t":"eq","v":"stop","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":730,"y":840,"wires":[["8c67ab728005df55"]]},{"id":"0b71269635672731","type":"function","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"Converte dados","func":"var fluxo = flow.get(\"fluxo\")\nvar segundos = msg.elapsed.millis / 1000\nvar minutos = segundos / 60\n\nmsg.minutos = parseFloat(minutos).toFixed(2)\nmsg.fluxo = parseFloat(fluxo).toFixed(2)\n\nlet litrosGastos = (msg.fluxo * msg.minutos)\n\nlitrosGastos = litrosGastos.toFixed(2)\n\n\nmsg.payload = litrosGastos;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1140,"y":840,"wires":[["6a135697e83d7324"]]},{"id":"cb7815d841f0f046","type":"change","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"","rules":[{"t":"set","p":"fluxo","pt":"flow","to":"payload_state","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":760,"wires":[[]]},{"id":"252423a7862daaa7","type":"comment","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"Aquecedor | Controles","info":"","x":140,"y":420,"wires":[]},{"id":"1f2384cc142e22b0","type":"link out","z":"e61a7a71a1c31efb","g":"c9f9fa6fbe198c26","name":"link out 26","mode":"link","links":["c1eb860e04493bb4"],"x":795,"y":540,"wires":[]},{"id":"c1eb860e04493bb4","type":"link in","z":"e61a7a71a1c31efb","g":"a363168fc5549a22","name":"link in 3","links":["1f2384cc142e22b0"],"x":205,"y":280,"wires":[["b509f659b74ae42d"]]},{"id":"8adf61b7671b21eb","type":"comment","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"Aquecedor | Tempo de Uso","info":"","x":150,"y":700,"wires":[]},{"id":"999d78e76632c6c2","type":"ha-api","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"","server":"db1ab0af.caa65","version":1,"debugenabled":false,"protocol":"http","method":"post","path":"/api/states/{{entity_id}}","data":"","dataType":"json","responseType":"json","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"results"}],"x":1650,"y":840,"wires":[[]]},{"id":"8c67ab728005df55","type":"moment","z":"e61a7a71a1c31efb","g":"e8ead804155ef48b","name":"","topic":"","input":"","inputType":"msg","inTz":"America/Sao_Paulo","adjAmount":0,"adjType":"days","adjDir":"add","format":"DD/MM/YYYY HH:mm","locale":"C","output":"data","outputType":"msg","outTz":"America/Sao_Paulo","x":920,"y":840,"wires":[["0b71269635672731"]]},{"id":"db1ab0af.caa65","type":"server","name":"Home Assistant","version":5,"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","enableGlobalContextStore":true}]

E esse é como ficou o Dash

1 Like

Ficou show. Compartilha ai o card também

1 Like

Apenas mais uma contribuição, como o sensor captura a corrente (A) e sabendo da voltagem em que o aquecedor está ligado então conseguimos ver o consumo em (W) e incluir no painel de energia

Segue abaixo o fluxo no Node_Red

[{"id":"0a34748ce447dc27","type":"group","z":"e61a7a71a1c31efb","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["f09ae57b79786cdd","a7ba1f4f58df0c3b","99696cbeede128da","0d324897ecd32971","dc7c1b5d72b9035c","35b8f02281eb29ba","91be2ab2667d8183"],"x":14,"y":1139,"w":932,"h":222},{"id":"cd8415ae683c805c","type":"subflow","name":"Dispara 20s","info":"","category":"","in":[],"out":[{"x":240,"y":100,"wires":[{"id":"5b283a941a67800a","port":0}]}],"env":[],"meta":{},"color":"#DDAA99"},{"id":"5b283a941a67800a","type":"inject","z":"cd8415ae683c805c","name":"Dispara 20s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"20","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"0","payloadType":"num","x":110,"y":100,"wires":[[]]},{"id":"8657af2efec3084d","type":"comment","z":"cd8415ae683c805c","name":"Disparador Automático 20s","info":"","x":130,"y":40,"wires":[]},{"id":"f09ae57b79786cdd","type":"api-current-state","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"Voltagem","server":"e46db00254686e3d","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.cozinha_forno_voltage","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":280,"y":1240,"wires":[["99696cbeede128da"]]},{"id":"a7ba1f4f58df0c3b","type":"api-current-state","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"Corrente","server":"e46db00254686e3d","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.cozinha_aquecedor_current","state_type":"num","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":280,"y":1320,"wires":[["99696cbeede128da"]]},{"id":"99696cbeede128da","type":"join","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":430,"y":1280,"wires":[["0d324897ecd32971"]]},{"id":"0d324897ecd32971","type":"function","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"function","func":"var payload\nvar power1 = msg.payload[0] * 1\nvar power2 = msg.payload[1] * 1\n\nmsg.payload = power1 * power2\nmsg.payload = parseFloat(msg.payload).toFixed(0)\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":1280,"wires":[["35b8f02281eb29ba"]]},{"id":"dc7c1b5d72b9035c","type":"comment","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"Consumo Energia","info":"","x":130,"y":1180,"wires":[]},{"id":"35b8f02281eb29ba","type":"ha-sensor","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"COZINHA Aquecedor Power","entityConfig":"21473a380b90448b","version":0,"state":"payload","stateType":"msg","attributes":[],"inputOverride":"allow","outputProperties":[],"x":800,"y":1280,"wires":[[]]},{"id":"91be2ab2667d8183","type":"subflow:cd8415ae683c805c","z":"e61a7a71a1c31efb","g":"0a34748ce447dc27","name":"","x":110,"y":1280,"wires":[["f09ae57b79786cdd","a7ba1f4f58df0c3b"]]},{"id":"e46db00254686e3d","type":"server","name":"Home Assistant","version":5,"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:s","enableGlobalContextStore":true},{"id":"21473a380b90448b","type":"ha-entity-config","server":"e46db00254686e3d","deviceConfig":"","name":"COZINHA Aquecedor Power","version":"6","entityType":"sensor","haConfig":[{"property":"name","value":"COZINHA Aquecedor Power"},{"property":"icon","value":""},{"property":"entity_category","value":""},{"property":"device_class","value":"power"},{"property":"unit_of_measurement","value":"W"},{"property":"state_class","value":"measurement"}],"resend":true,"debugEnabled":false}]

O Card ficou assim

aquecedor

No painel de energia assim

E esse é o codigo do Dash

type: vertical-stack
cards:

  • type: custom:mushroom-title-card
    title: Aquecedor
    subtitle: ‘’
  • square: false
    columns: 1
    type: grid
    cards:
    • type: custom:mushroom-template-card
      primary: Aquecedor
      entity: input_boolean.cozinha_aquecedor
      icon: mdi:fire
      icon_color: >-
      {% if states(‘sensor.cozinha_aquecedor_fluxo_de_agua’) | float > 0 %}
      blue {% endif %}
      tap_action:
      action: none
      card_mod:
      style:
      mushroom-shape-icon$: >
      ha-icon {

        {% if states('sensor.cozinha_aquecedor_fluxo_de_agua') | float > 0
        %}
          --icon-animation: fire 1.5s infinite;
          transform-origin: 50% 85%;
        {% endif %}
      
        }
      
        @keyframes fire {
            0% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            5% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            10% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            15% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            20% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            25% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            30% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            35% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            40% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            45% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            50% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            55% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            60% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            65% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            70% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            75% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            80% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            85% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            90% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
            95% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-red)); opacity: {{range(7, 10) | random / 10}}; }
            100% { transform: rotate({{range(-20, 20) | random / 10}}deg) scaleY({{range(9, 12) | random / 10}}); color: rgb(var(--rgb-deep-orange)); opacity: {{range(7, 10) | random / 10}}; }
        }
      
  • square: true
    columns: 2
    type: grid
    cards:
    • type: picture
      image: \local\imgs\eletros\Aquecedor a Gás.jpg
      tap_action:
      action: none
      hold_action:
      action: none
    • square: false
      columns: 1
      type: grid
      cards:
      • type: gauge
        entity: sensor.cozinha_aquecedor_power
        needle: true
        severity:
        green: 1
        yellow: 1500
        red: 2250
        min: 1
        max: 3000
        name: Potência
      • type: custom:mushroom-chips-card
        chips:
        • type: entity
          entity: sensor.cozinha_forno_voltage
          icon_color: red
        • type: entity
          entity: sensor.cozinha_aquecedor_voltage
          icon_color: red
          alignment: center
      • type: gauge
        entity: sensor.cozinha_aquecedor_temperatura
        needle: true
        severity:
        green: 0
        yellow: 42
        red: 49
        min: 15
        max: 60
        name: Temperatura
      • type: custom:mushroom-chips-card
        chips:
        • type: entity
          entity: sensor.cozinha_aquecedor_fluxo_de_agua
          icon_color: red
          icon: mdi:water-opacity
        • type: entity
          entity: sensor.cozinha_aquecedor_network
          icon_color: red
        • type: entity
          entity: sensor.cozinha_aquecedor
          icon_color: red
          alignment: center
  • square: false
    columns: 3
    type: grid
    cards:
    • type: custom:mushroom-template-card
      entity: sensor.cozinha_aquecedor
      layout: vertical
      secondary_info: none
      primary: ON / OFF
      icon: mdi:water-boiler
      icon_color: >-
      {% if is_state(‘sensor.cozinha_aquecedor’, ‘desligado’) %} red {% else
      %} blue {% endif %}
      card_mod:
      style: |
      ha-card:active {
      transform: translateY(1.5px);
      transition: 0s;
      box-shadow: 0 0.5px 2px 0 rgba(0, 0, 0, 0.16);
      }
    • type: custom:mushroom-template-card
      primary: Diminui
      secondary: ‘’
      icon: mdi:thermometer-minus
      entity: input_button.cozinha_aquecedor_minus
      layout: vertical
      fill_container: true
      icon_color: >-
      {% if is_state(‘sensor.cozinha_aquecedor’, ‘desligado’) %} red {% else
      %} blue {% endif %}
      card_mod:
      style: |
      ha-card:active {
      transform: translateY(1.5px);
      transition: 0s;
      box-shadow: 0 0.5px 2px 0 rgba(0, 0, 0, 0.16);
      }
    • type: custom:mushroom-template-card
      primary: Aumenta
      secondary: ‘’
      icon: mdi:thermometer-plus
      entity: input_button.cozinha_aquecedor_plus
      layout: vertical
      fill_container: true
      icon_color: >-
      {% if is_state(‘sensor.cozinha_aquecedor’, ‘desligado’) %} red {% else
      %} blue {% endif %}
      card_mod:
      style: |
      ha-card:active {
      transform: translateY(1.5px);
      transition: 0s;
      box-shadow: 0 0.5px 2px 0 rgba(0, 0, 0, 0.16);
      }

coloquei o código ai :slight_smile:

2 Likes

Pessoal, sem querer localizei um add-on muito top para os aquecedores rinnai, fiz alguns testes e ele está super funcionando.

Ele foi criado pelo @alejr que mandou super bem.

Esse é o link do tópico no fórum

E esse o github desse add-on

2 Likes

Legal, não tinha visto…Irei fazer mais testes também, estava me quebrando fazendo calculos e tem um comando /historico rsrsrs

Alguma forma de instalar esse add-on sem supervisor?

ATUALIZEI O CÓDIGO

Agora é possível arrastar para controlar a temperatura:

image

Para ter essa nova função é só adicionar uma entidade auxiliar:

Detalhe importante: o range está de 35 até 46, após o 46 ele pula para 48, 50, 55 e 60 no meu caso não vejo necessidade nessas temperaturas então fiz do 35 ao 46.

Código nodered:

[{"id":"6bccceffbf03f205","type":"tab","label":"-Aquecedor","disabled":false,"info":"","env":[]},{"id":"11377a49ab0dd16c","type":"group","z":"6bccceffbf03f205","style":{"stroke":"#3a3a3a","stroke-opacity":"1","fill":"#1e1e1e","fill-opacity":"0.5","label":true,"label-position":"nw","color":"#cccccc"},"nodes":["b53a0e69c71032f4","9ffc1d89401fc5f4","7f510259700499c1","808aa2331daa5d0c","2ce64cf39002710e","5e58c77d5c4269af","c2f34eac169e2a6d","3b6ba41fad2d9443","fc4c7af6bf0bbf57","9fcf98bec86da9ef","f5d766f9a5f160a6","682b7c3689643889","49ca67f67bc9f469","139716273152f7df","2faf887b2663c0cd","d96714933d6c3005","4508ab72cacf22e9","8570dfa3ec32dc76","5557e704e7f71ef8","9fa20095c74f2e7c","ab203e8712bee4a6"],"x":34,"y":579,"w":892,"h":322},{"id":"ffba20906ec8d1f1","type":"group","z":"6bccceffbf03f205","style":{"stroke":"#3a3a3a","stroke-opacity":"1","fill":"#1e1e1e","fill-opacity":"0.5","label":true,"label-position":"nw","color":"#cccccc"},"nodes":["1081cd28893374c2","53fee50beef568ab","6853591e7cb5204b","99fe0131613b7443","06e65439dff18501","ca430d9a3c59768b","b50036ac01903411","721483cbb3e537fe","fc130b5361929011","600d16fd7238bb13","a74d8fd2b0e72174","9fb566d0656a4c6a","478ed976d1cc6dc8","f2fb03d9bf414499","09992d6cadf015b0","853ec97e34464eed","0120aeb83fd7982c","b2df083e64981204","bb8ab8b613f6393d","f40e4f8b2d871e6a","e683d6b4991e5c0b","eb717f96607c38f2","2527c294daab7639","7fac43b3263a1cdb","d78290de85229c80","17c442e4c6dcffd0","6f6782e9e93a2782","9b7a6a109e0e6272","8f3c0d3a7784b084","e87207bbdb5b96e4","e9253755c8ecc819","cfc8743c5a505a5d","c6a8026615704059","f2ef115206d8a0cc","fac3dc98044ff627","9707718b5e56b995","02cdcb16a0a35296"],"x":34,"y":19,"w":1752,"h":462},{"id":"9b7a6a109e0e6272","type":"junction","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","x":440,"y":320,"wires":[["b2df083e64981204"]]},{"id":"8f3c0d3a7784b084","type":"junction","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","x":1640,"y":140,"wires":[["721483cbb3e537fe"]]},{"id":"1081cd28893374c2","type":"inject","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Atualiza sensor a cada 10s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"10","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":200,"y":60,"wires":[["53fee50beef568ab"]]},{"id":"53fee50beef568ab","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para pegar informações","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/bus","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":840,"y":60,"wires":[["06e65439dff18501"]]},{"id":"6853591e7cb5204b","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para aumentar temp","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/inc","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":490,"y":100,"wires":[["600d16fd7238bb13"]]},{"id":"99fe0131613b7443","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para diminuir temp","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/dec","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":480,"y":160,"wires":[["600d16fd7238bb13"]]},{"id":"06e65439dff18501","type":"split","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":1050,"y":60,"wires":[["ca430d9a3c59768b"]]},{"id":"ca430d9a3c59768b","type":"join","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","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":1170,"y":60,"wires":[["853ec97e34464eed","09992d6cadf015b0","f2fb03d9bf414499","b50036ac01903411","e87207bbdb5b96e4"]]},{"id":"b50036ac01903411","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor geral","func":"\nif (msg.payload[0] == 11){\n    msg.payload[0] = \"desligado\"\n}\nif (msg.payload[0] == 41 && msg.payload[2] == 0) {\n    msg.payload[0] = \"stand-by\"\n}\nif (msg.payload[0] == 41 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 21 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 42 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 43 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\nif (msg.payload[0] == 48 && msg.payload[2] == 1) {\n    msg.payload[0] = \"em uso\"\n}\n\n// Sensor geral\nmsg.entity_id = 'sensor.aquecedor_gas'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[0],\n        attributes: {\n            vazao_minima_para_acionamento: msg.payload[13],\n            vazao_minima_para_desligamento: msg.payload[14],\n            data_firmware: msg.payload[22],\n            horas_de_combustao: msg.payload[4],\n            potencia_maxima_kcal_min: msg.payload[9],\n            rotacao_da_ventoinha: msg.payload[7],\n            corrente: msg.payload[8],\n            horas_de_stand_by: msg.payload[5],\n            numero_de_serie: msg.payload[19],\n            icon: \"mdi:information\",\n            friendly_name: \"Aquecedor Rinnai E17 Informações\",\n        }\n    }\n};\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1470,"y":140,"wires":[["8f3c0d3a7784b084"]]},{"id":"721483cbb3e537fe","type":"ha-api","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","server":"db1ab0af.caa65","version":1,"debugenabled":false,"protocol":"http","method":"post","path":"/api/states/{{entity_id}}","data":"","dataType":"json","responseType":"json","outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"results"}],"x":1710,"y":140,"wires":[[]]},{"id":"fc130b5361929011","type":"http request","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Comando para ligar/desligar","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/lig","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":480,"y":220,"wires":[["600d16fd7238bb13"]]},{"id":"600d16fd7238bb13","type":"delay","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","pauseType":"delay","timeout":"3","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":720,"y":100,"wires":[["53fee50beef568ab"]]},{"id":"a74d8fd2b0e72174","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Aumentar temperatura","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_aumentar_temperatura","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":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":180,"y":100,"wires":[["6853591e7cb5204b"]]},{"id":"9fb566d0656a4c6a","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Diminui temperatura","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_button.aquecedor_diminuir_temperatura","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":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":170,"y":160,"wires":[["99fe0131613b7443"]]},{"id":"478ed976d1cc6dc8","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Liga / Desliga aquecedor","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_boolean.aquecedor_ligar_desligar","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":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":190,"y":220,"wires":[["fc130b5361929011"]]},{"id":"f2fb03d9bf414499","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor temparura","func":"\nmsg.payload[15] = msg.payload[15].slice(0, -2);\nmsg.payload[10] = msg.payload[10].slice(0, -2);\nmsg.payload[11] = msg.payload[11].slice(0, -2);\n\nmsg.entity_id = 'sensor.aquecedor_gas_temperatura'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[15],\n        attributes: {\n            temperatura_de_entrada: msg.payload[10],\n            temperatura_de_saida: msg.payload[11],\n            state_class: \"measurement\",\n            unit_of_measurement: \"°C\",\n            device_class: \"temperature\",\n            icon: \"mdi:water-boiler\",\n            friendly_name: \"Aquecedor Rinnai E17 Temperatura\",\n        }\n    }\n};\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1450,"y":100,"wires":[["8f3c0d3a7784b084"]]},{"id":"09992d6cadf015b0","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor network","func":"\nmsg.entity_id = 'sensor.aquecedor_gas_network'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[37],\n        attributes: {\n            state_class: \"measurement\",\n            unit_of_measurement: \"dBm\",\n            device_class: \"signal_strength\",\n            ip: msg.payload[16],\n            mac: msg.payload[25],\n            icon: \"mdi:wifi\",\n            friendly_name: \"Aquecedor Rinnai E17 Network\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1460,"y":180,"wires":[["8f3c0d3a7784b084"]]},{"id":"853ec97e34464eed","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor do fluxo de água","func":"\nmsg.payload[12] = msg.payload[12] / 100;\n\nmsg.entity_id = 'sensor.aquecedor_gas_fluxo_de_agua'\n\nmsg.payload = {\n    data: {\n        state: msg.payload[12],\n        attributes: {\n            unit_of_measurement: \"l/m\",\n            device_class: \"flow\",\n            state_class: \"measurement\",\n            icon: \"mdi:water-opacity\",\n            friendly_name: \"Aquecedor Rinnai E17 Fluxo de Água\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1430,"y":60,"wires":[["8f3c0d3a7784b084"]]},{"id":"0120aeb83fd7982c","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor quantos litros último uso","func":"// Sensor litros de água gastos\n\nmsg.entity_id = 'sensor.aquecedor_gas_litros_ultimo'\n\nmsg.payload = {\n    data: {\n        state: msg.payload,\n        attributes: {\n            ultimo_registro: flow.get(\"data\"),\n            tempo_aberto: msg.tempo,\n            unit_of_measurement: \"L\",\n            device_class: \"flow\",\n            state_class: \"measurement\",\n            icon: \"mdi:water-pump\",\n            friendly_name: \"Aquecedor Rinnai E17 Quantidade de Litros Gastos Último Uso\",\n        }\n    }\n};\n\n\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1410,"y":320,"wires":[["8f3c0d3a7784b084"]]},{"id":"b2df083e64981204","type":"hourglass","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","persistId":"","humanizeLocale":"pt-br","x":520,"y":320,"wires":[["7fac43b3263a1cdb"]]},{"id":"bb8ab8b613f6393d","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"start","rules":[{"t":"set","p":"command","pt":"msg","to":"start","tot":"str"},{"t":"set","p":"status","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":280,"wires":[["9b7a6a109e0e6272","17c442e4c6dcffd0"]]},{"id":"f40e4f8b2d871e6a","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"stop","rules":[{"t":"set","p":"command","pt":"msg","to":"stop","tot":"str"},{"t":"set","p":"status","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":320,"wires":[["eb717f96607c38f2","9b7a6a109e0e6272"]]},{"id":"e683d6b4991e5c0b","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"reset","rules":[{"t":"set","p":"command","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":290,"y":360,"wires":[["9b7a6a109e0e6272"]]},{"id":"eb717f96607c38f2","type":"delay","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":195,"y":360,"wires":[["e683d6b4991e5c0b"]],"l":false},{"id":"2527c294daab7639","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Fluxo > 0","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.aquecedor_gas_fluxo_de_agua","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"0","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"output_only_on_state_change":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"payload_state","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":140,"y":280,"wires":[["bb8ab8b613f6393d"],["f40e4f8b2d871e6a"]]},{"id":"7fac43b3263a1cdb","type":"switch","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"= stop","property":"command","propertyType":"msg","rules":[{"t":"eq","v":"stop","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":650,"y":320,"wires":[["d78290de85229c80"]]},{"id":"d78290de85229c80","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Convertendo os dados","func":"/*var fluxo = flow.get(\"fluxo\")\nvar segundos = msg.elapsed.millis / 1000\nvar minutos = segundos / 60\n\nmsg.minutos = minutos.toFixed(1)\nmsg.fluxo = fluxo\n\nlet litrosGastos = (fluxo * msg.minutos)\n\nlitrosGastos = litrosGastos.toFixed(1)\n\n\nmsg.payload = litrosGastos; */\n\n\n\nvar fluxo = flow.get(\"fluxo\")\nvar segundos = msg.elapsed.millis / 1000\nvar minutos = segundos / 60\n\nmsg.minutos = Math.floor(minutos)\nmsg.segundos = Math.floor((minutos - msg.minutos) * 60)\nmsg.fluxo = fluxo\n\nlet litrosGastos = (fluxo * minutos)\n\nlitrosGastos = litrosGastos.toFixed(1)\n\nmsg.payload = litrosGastos;\n\nmsg.tempo = msg.minutos + \"min\" + msg.segundos.toString().padStart(2, '0') + \"s\";\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":320,"wires":[["0120aeb83fd7982c"]]},{"id":"17c442e4c6dcffd0","type":"change","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","rules":[{"t":"set","p":"fluxo","pt":"flow","to":"payload_state","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":280,"wires":[["6f6782e9e93a2782"]]},{"id":"b53a0e69c71032f4","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":680,"wires":[["7f510259700499c1"]]},{"id":"9ffc1d89401fc5f4","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"bus","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":680,"wires":[]},{"id":"7f510259700499c1","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar informações","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/bus","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":360,"y":680,"wires":[["808aa2331daa5d0c"]]},{"id":"808aa2331daa5d0c","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":570,"y":680,"wires":[["2ce64cf39002710e"]]},{"id":"2ce64cf39002710e","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":690,"y":680,"wires":[["9ffc1d89401fc5f4"]]},{"id":"5e58c77d5c4269af","type":"comment","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Dev","info":"#   \"Status ligado/desligado/stand-by: $col0\"\n#   \"Erros do sistma: $col01\"\n#   \"Número de acionamentos: $col03\"\n#   \"Temperatura de entrata: $col10\"\n#   \"Temperatura de saída: $col11\"\n#   \"Vazão mínima p/ acionamento: $col13\"\n#   \"Vazão mínima p/ desligamento: $col14\"\n#   \"Temperatura setada: $col15\"\n#   \"Endereço IP: $col16\"\n#   \"Data Firmware: $col22\"\n#   \"MAC Address: $col25\"\n#   \"Sinal wi-fi: $col37\"\n#   \"Horas de combustão: $col04\"\n#   \"Horas de stand-by: $col05\"\n#   \"Número de série: $col19\"\n#   \"Potência máxima (kcal/min): $col09\"\n#   \"Fluxo real: $col12\"\n#   \"Rotação da ventoinha: $col07\"\n#   \"Corrente: $col08\"\n\n# http://192.168.0.110/historico\n# http://192.168.0.110/consumo\n# http://192.168.0.110/tela_\n# http://192.168.0.110/erros","x":110,"y":620,"wires":[]},{"id":"c2f34eac169e2a6d","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":740,"wires":[["fc4c7af6bf0bbf57"]]},{"id":"3b6ba41fad2d9443","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"historico","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":820,"y":740,"wires":[]},{"id":"fc4c7af6bf0bbf57","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar historico","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/historico","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":350,"y":740,"wires":[["9fcf98bec86da9ef"]]},{"id":"9fcf98bec86da9ef","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":570,"y":740,"wires":[["f5d766f9a5f160a6"]]},{"id":"f5d766f9a5f160a6","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":690,"y":740,"wires":[["3b6ba41fad2d9443"]]},{"id":"682b7c3689643889","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":800,"wires":[["139716273152f7df"]]},{"id":"49ca67f67bc9f469","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"consumo","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":820,"y":800,"wires":[]},{"id":"139716273152f7df","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar consumo","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/consumo","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":350,"y":800,"wires":[["2faf887b2663c0cd"]]},{"id":"2faf887b2663c0cd","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":570,"y":800,"wires":[["d96714933d6c3005"]]},{"id":"d96714933d6c3005","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":690,"y":800,"wires":[["49ca67f67bc9f469"]]},{"id":"4508ab72cacf22e9","type":"inject","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":140,"y":860,"wires":[["5557e704e7f71ef8"]]},{"id":"8570dfa3ec32dc76","type":"debug","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"erros","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":810,"y":860,"wires":[]},{"id":"5557e704e7f71ef8","type":"http request","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"Comando para pegar erros","method":"GET","ret":"txt","paytoqs":"ignore","url":"http://192.168.0.110/erros","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":340,"y":860,"wires":[["9fa20095c74f2e7c"]]},{"id":"9fa20095c74f2e7c","type":"split","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","name":"","splt":",","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":570,"y":860,"wires":[["ab203e8712bee4a6"]]},{"id":"ab203e8712bee4a6","type":"join","z":"6bccceffbf03f205","g":"11377a49ab0dd16c","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":690,"y":860,"wires":[["8570dfa3ec32dc76"]]},{"id":"6f6782e9e93a2782","type":"moment","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"","topic":"","input":"","inputType":"msg","inTz":"America/Sao_Paulo","adjAmount":0,"adjType":"days","adjDir":"add","format":"DD/MM/YYYY HH:mm","locale":"C","output":"data","outputType":"flow","outTz":"America/Sao_Paulo","x":720,"y":280,"wires":[[]]},{"id":"e87207bbdb5b96e4","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Criar sensor erros","func":"if (msg.payload[1] == 10) {\n    msg.erro = \"Código: 10 - Problema na ventoinha ou obstrução no fluxo\"\n}\nif (msg.payload[1] == 11) {\n    msg.erro = \"Código: 11 - Ao ligar não acende, falta de gás\"\n}\nif (msg.payload[1] == 12) {\n    msg.erro = \"Código: 12 - Falta de gás em uso\"\n}\nif (msg.payload[1] == 14) {\n    msg.erro = \"Código: 14 - Fusível ou termostato rompido\"\n}\nif (msg.payload[1] == 32) {\n    msg.erro = \"Código: 32 - Termistor com problema\"\n}\nif (msg.payload[1] == 52) {\n    msg.erro = \"Código: 52 - Conector solto da válvula moduladora de chama (POV)\"\n}\nif (msg.payload[1] == 61) {\n    msg.erro = \"Código: 61 - Conector da ventoinha solto\"\n}\nif (msg.payload[1] == 72) {\n    msg.erro = \"Código: 72 - Sensor de chama com problema \"\n}\nif (msg.payload[1] == 0) {\n    msg.erro = \"OK\"\n}\n\n\n\n\n// Sensor geral\nmsg.entity_id = 'sensor.aquecedor_gas_erro'\n\nmsg.payload = {\n    data: {\n        state: msg.erro,\n        attributes: {\n            icon: \"mdi:information\",\n            friendly_name: \"Aquecedor Rinnai E17 Erro\",\n        }\n    }\n};\n\n\nreturn msg","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1470,"y":220,"wires":[["8f3c0d3a7784b084"]]},{"id":"c6a8026615704059","type":"server-state-changed","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Setar temperatura ","server":"db1ab0af.caa65","version":4,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"input_number.set_temperatura","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":true,"ignorePrevStateUnknown":true,"ignorePrevStateUnavailable":true,"ignoreCurrentStateUnknown":true,"ignoreCurrentStateUnavailable":true,"outputProperties":[{"property":"set_temp","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":170,"y":420,"wires":[["f2ef115206d8a0cc"]]},{"id":"f2ef115206d8a0cc","type":"api-current-state","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"Temperatura atual","server":"db1ab0af.caa65","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.aquecedor_gas_temperatura","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"temp_atual","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":370,"y":420,"wires":[["fac3dc98044ff627"]]},{"id":"fac3dc98044ff627","type":"function","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"set temp","func":"var diferenca = msg.set_temp - msg.temp_atual\n\nmsg.temp_nova = Math.abs(diferenca)\n\n\nif (msg.set_temp > msg.temp_atual){\n    for (var i = 0; i < msg.temp_nova; i++) {\n        msg.payload = 'aumenta'\n\n        node.send([msg, null]);\n        //return [msg, null];\n    }\n    i = i+1\n}\n\nif (msg.set_temp < msg.temp_atual) {\n    for (var i = 0; i < msg.temp_nova; i++) {\n        msg.payload = 'diminui'\n\n        node.send([null, msg]);\n        //return [null, msg];  \n    }\n    i = i + 1\n}\n","outputs":2,"noerr":0,"initialize":"","finalize":"","libs":[],"x":540,"y":420,"wires":[["02cdcb16a0a35296"],["9707718b5e56b995"]]},{"id":"02cdcb16a0a35296","type":"link out","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"aumentar","mode":"link","links":["e9253755c8ecc819"],"x":645,"y":400,"wires":[]},{"id":"9707718b5e56b995","type":"link out","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"diminuir","mode":"link","links":["cfc8743c5a505a5d"],"x":645,"y":440,"wires":[]},{"id":"e9253755c8ecc819","type":"link in","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"aumentar","links":["02cdcb16a0a35296"],"x":335,"y":100,"wires":[["6853591e7cb5204b"]]},{"id":"cfc8743c5a505a5d","type":"link in","z":"6bccceffbf03f205","g":"ffba20906ec8d1f1","name":"diminuir","links":["9707718b5e56b995"],"x":335,"y":160,"wires":[["99fe0131613b7443"]]},{"id":"db1ab0af.caa65","type":"server","name":"Home Assistant","version":5,"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","enableGlobalContextStore":true}]
1 Like

Esse codigo ficou estranho, pois ele trocou o - por º e ta dando erro na hora de importar.
Pode verificar?

Boa tarde pessoal, tudo bem?
Comprei o modulo da rinnai e nunca funcionou pelo app, entao resolvi criar uma interface e cheguei ate aqui.
Apos entender todos os comandos, o unico que nao funciona no meu caso eh o de aumentar temperatura http://IP/inc.
O comando IP/dec funciona corretamente.

Alguma sugestao sobre esse problema?
Obrigado,
Edgar

Chegou a tentar o comando direto no navegador?

Aqui todos os comandos funcionam, só se a versão que colocou do módulo seja diferente.

To testando tudo pelo navegador pra garantir.
O comando traz o resultado certinho, como o dec tb traz, só que nao consegue subir uma temperatura.

O dec funciona, diminui de boa, mas o inc nao aumenta, so traz o resultado na tela, isso que achei bizarro

Chegou a testar pelo próprio app da Rinnai se aumenta também?

Esse foi o primeiro problema!
Comprei o modulo, instalei, configurei pelo celular mas o aplicativo nao acha o aquecedor por nada na rede.
Uso tudo unifi em casa, liberei tudo de acesso, nada… mas eu consigo, pela console, ver que ele ta online na rede wifi. A partir dai, comecei a tentar achar os comandos, via navegador, e achei esse forum com a lista dos comandos.

Teria que ver se não é algum problema do módulo então. Eu tentaria configurar primeiro pelo aplicativo da Rinnai mesmo, caso lá também não aumente a temperatura vc terá certeza do problema do módulo.