Criar sensor que demostra a sensação térmica do ambiente através do Node Red

Olá, o intuito deste tutorial é ajudar nas automações através da sensação térmica pois ha uma boa diferenca entre a temperatura mostrada no sensor e sensação térmica no ambiente. Fiz alguns testes e realmente você sente a diferença. Este tutorial é de autoria do Patrick do canal PatteTeck estou replicando aqui pois achei muito válido.
O que é necessário para poder ciar este sensor:

  • Sensor de temperatura e Humidade
  • Node Red
  • Hacs
  • Integração Node Red pelo Hacs

Aqui está o vídeo explicando o passo a passo:

Antes de importar o Nó sugiro ver o vídeo pois é preciso instalar uma integração do node red pelo Hacs.

Aqui está o no pronto para ser baixado:

[{“id”:“507937759e7bb707”,“type”:“server-state-changed”,“z”:“5f4c9e8f.dcfd8”,“name”:“Temperatura Aparente”,“server”:“17f902e.f0d18fd”,“version”:3,“exposeToHomeAssistant”:false,“haConfig”:[{“property”:“name”,“value”:""},{“property”:“icon”,“value”:""}],“entityidfilter”:“sensor.sensor_display_temperatura”,“entityidfiltertype”:“exact”,“outputinitially”:true,“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”:180,“wires”:[[“3e49c4d504f9957c”,“77920aae9a739f65”]]},{“id”:“3e49c4d504f9957c”,“type”:“api-current-state”,“z”:“5f4c9e8f.dcfd8”,“name”:“Umidade”,“server”:“17f902e.f0d18fd”,“version”:2,“outputs”:1,“halt_if”:"",“halt_if_type”:“str”,“halt_if_compare”:“is”,“entity_id”:“sensor.sensor_display_umidade”,“state_type”:“str”,“blockInputOverrides”:false,“outputProperties”:[{“property”:“payload”,“propertyType”:“msg”,“value”:"",“valueType”:“entityState”},{“property”:“data”,“propertyType”:“msg”,“value”:"",“valueType”:“entity”}],“override_topic”:false,“state_location”:“payload”,“override_payload”:“msg”,“entity_location”:“data”,“override_data”:“msg”,“x”:310,“y”:220,“wires”:[[“77920aae9a739f65”]]},{“id”:“77920aae9a739f65”,“type”:“join”,“z”:“5f4c9e8f.dcfd8”,“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”:450,“y”:180,“wires”:[[“0939c50e58151a56”]]},{“id”:“0939c50e58151a56”,“type”:“function”,“z”:“5f4c9e8f.dcfd8”,“name”:"",“func”:“function calIndCalor() {\n var id;\n // Referência: http://www.hpc.ncep.noaa.gov/html/heatindex_equation.shtml\n // HI = -42.379 + 2.04901523T + 10.14333127RH - .22475541TRH - .00683783TT - .05481717RHRH + .00122874TTRH + .00085282TRHRH - .00000199TTRHRH\n var tempF = msg.payload[0];\n var umR = msg.payload[1];\n if (tempF !== “” && umR !== “”) {\n tempF = ((tempF * 1.8) + 32);\n var HI;\n if (parseFloat(tempF) <= 32) {\n HI = tempF;\n } else {\n HI = 0.5 * (tempF + 61.0 + ((tempF - 68.0) * 1.2) + (umR * 0.094));\n if (HI > 79) {\n HI = -42.379 + 2.04901523 * tempF + 10.14333127 * umR - 0.22475541 * tempF * umR - 0.00683783 * tempF * tempF - 0.05481717 * umR * umR + 0.00122874 * tempF * tempF * umR + 0.00085282 * tempF * umR * umR - 0.00000199 * tempF * tempF * umR * umR;\n if ((umR <= 13) && ((tempF >= 80) && tempF <= 112)) {\n HI -= ((13 - umR) / 4) * Math.sqrt((17 - Math.abs(tempF - 95)) / 17);\n }\n if ((umR > 85) && ((tempF >= 80) && tempF <= 87)) {\n HI += ((umR - 85) / 10) * ((87 - tempF) / 5);\n }\n }\n }\n id = (HI - 32) / 1.8;\n }\n return id;\n}\nvar indicecalor = parseFloat(calIndCalor().toFixed(2))\nreturn { payload: indicecalor };”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“libs”:[],“x”:600,“y”:180,“wires”:[[“62e2c4ce5581e45a”]]},{“id”:“62e2c4ce5581e45a”,“type”:“ha-entity”,“z”:“5f4c9e8f.dcfd8”,“name”:“Indice de Calor”,“server”:“17f902e.f0d18fd”,“version”:1,“debugenabled”:false,“outputs”:1,“entityType”:“sensor”,“config”:[{“property”:“name”,“value”:“IC_Escritorio”},{“property”:“device_class”,“value”:""},{“property”:“icon”,“value”:""},{“property”:“unit_of_measurement”,“value”:“ºC”}],“state”:“payload”,“stateType”:“msg”,“attributes”:[],“resend”:true,“outputLocation”:“payload”,“outputLocationType”:“msg”,“inputOverride”:“allow”,“outputOnStateChange”:false,“outputPayload”:"$entity().state ? “on”: “off”",“outputPayloadType”:“jsonata”,“x”:790,“y”:180,“wires”:[[]]},{“id”:“17f902e.f0d18fd”,“type”:“server”,“name”:“Home Assistant”,“version”:1,“addon”:true,“rejectUnauthorizedCerts”:true,“ha_boolean”:“y|yes|true|on|home|open”,“connectionDelay”:true,“cacheJson”:true}]

Créditos:
Patrick Teixeira - Canal Patte Teck.

Abraços.

3 Likes

Boa tarde, obrigado pelos seus tutoriais, são espetaculares. Não consigo encontrar a função que refere e colou dentro da “funtion”. Onde posso ir buscar?
Obrigado