domoticafacilconjota / capitulos

Copy y paste del canal
39 stars 50 forks source link

[NuevoFlow] Detector de temperatura alta en interior de frigorifico #35

Open fjterrada69 opened 3 years ago

fjterrada69 commented 3 years ago

Explicación de lo que debe hacer el flow en Node RED [{"id":"912aed1e.4308b","type":"tab","label":"Alarma mediante sensor de temperatura de puerta abierta en el frigorifico","disabled":false,"info":"Cuando el sensor de temperatura zigbee xiaomi WSDCGQ11LM detecta que la temperatura es superior a 16ºC nos dá una alarma a la APP y un mensaje de sonido a la Gateway de xiaomi de que la puerta del frigorifico se ha quedado abierta. Este mensaje no se vuelve a repetir hasta que la temperatura no vuelve a bajar de 16ºC.\n\nAdemas si el mensaje de temperatura de 16ºC se repite durante 3 veces consecutivas, a los 5 minutos nos dá un nuevo mensaje en la APP y un mensaje de sonido a la Gateway de xiaomi de que la puerta del frigorifico se ha quedado abieta durante 5 minutos. Si la temperatura baja de 16ºC antes o despues de los 5 mimnutos se reseta.\n"},{"id":"be0ceb08.060e88","type":"api-call-service","z":"912aed1e.4308b","name":"Sonido gateway xiaomi","server":"522ea794.5589c8","version":1,"debugenabled":false,"service_domain":"xiaomi_aqara","service":"play_ringtone","entityId":"","data":"{\"gw_mac\":\"78:11:DC:B2:14:11\",\"ringtone_id\":\"10018\",\"ringtone_vol\":\"100\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1750,"y":600,"wires":[[]]},{"id":"940d46b0.7c7458","type":"api-call-service","z":"912aed1e.4308b","name":"APP puerta frigorifico abierta","server":"522ea794.5589c8","version":1,"debugenabled":false,"service_domain":"notify","service":"mobile_app_redmi_note_7","entityId":"","data":"{\"message\":\"Alta temperatura en el frigorifico, puerta abierta\",\"title\":\"ALARMA\",\"data\":{\"clickAction\":\"/lovelace/sensores\"}}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1500,"y":100,"wires":[[]]},{"id":"ffa739ab.4d5b38","type":"change","z":"912aed1e.4308b","name":"reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":500,"wires":[["77e748e6.13f468","6ff6c68.fe32e38"]]},{"id":"4dfb504d.543a2","type":"switch","z":"912aed1e.4308b","name":"¿Temperatura 16ºC?","property":"payload","propertyType":"msg","rules":[{"t":"gte","v":"16","vt":"num"},{"t":"lt","v":"16","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":400,"y":160,"wires":[["48d9f7f5.c2b458","4a62a5f2.0f84bc","c52947f4.6aa578"],["ffa739ab.4d5b38","4a62a5f2.0f84bc","a44a34c2.a4c0f8"]]},{"id":"48d9f7f5.c2b458","type":"change","z":"912aed1e.4308b","name":"Superior a 16 Cº","rules":[{"t":"set","p":"payload","pt":"msg","to":"Superior a 16 Cº","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":720,"y":140,"wires":[["77e748e6.13f468"]]},{"id":"77e748e6.13f468","type":"rbe","z":"912aed1e.4308b","name":"Bloquear a menos que el valor cambie","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":990,"y":140,"wires":[["a5af39b4.99bb78"]]},{"id":"c52947f4.6aa578","type":"change","z":"912aed1e.4308b","d":true,"name":"","rules":[{"t":"set","p":"last_temp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":620,"wires":[[]]},{"id":"4a62a5f2.0f84bc","type":"function","z":"912aed1e.4308b","name":"monitor temperatures","func":"let previous = context.get('previous') || 16;\nlet hot = flow.get('hot') || 0;\n\nnode.warn(hot);\n\nlet t = parseInt(msg.payload);\nif (t > 16)\n{\n // Too HOT.\n flow.set('hot', hot + 1); // Increment counter\n}\nif (t <= 16)\n{\n // Ok range.\n if (hot > 0)\n {\n flow.set('hot', hot - 1); // Decrement counter\n }\n}\nif (t < 12)\n{\n // Really good.\n flow.set('hot',0); // All good. Forget past.\n}\nif (hot >= 3) // Change the 3 as needed\n{\n msg.payload = \"ALARM\";\n}\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","x":740,"y":580,"wires":[["26864954.755376"]]},{"id":"26864954.755376","type":"switch","z":"912aed1e.4308b","name":"Cambiar a ALARM","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ALARM","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":970,"y":580,"wires":[["6ff6c68.fe32e38"]]},{"id":"1f1fbae8.d7a0b5","type":"server-state-changed","z":"912aed1e.4308b","name":"Temperatura frigorifico","server":"522ea794.5589c8","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.temperatura_frigorifico_temperature","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":"","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":160,"y":160,"wires":[["4dfb504d.543a2"]]},{"id":"ac4ecb2c.01f9d8","type":"api-call-service","z":"912aed1e.4308b","name":"APP puerta frigorifico abierta más 5 minutos","server":"522ea794.5589c8","version":1,"debugenabled":false,"service_domain":"notify","service":"mobile_app_redmi_note_7","entityId":"","data":"{\"message\":\"Alta temperatura en el frigorifico, puerta abierta durante 5 minutos\",\"title\":\"ALARMA\",\"data\":{\"clickAction\":\"/lovelace/sensores\"}}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1810,"y":520,"wires":[[]]},{"id":"e8e266b7.7dbb88","type":"delay","z":"912aed1e.4308b","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"minutes","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1480,"y":560,"wires":[["ac4ecb2c.01f9d8","be0ceb08.060e88"]]},{"id":"9752d5a8.6561c8","type":"api-call-service","z":"912aed1e.4308b","name":"Sonido gateway xiaomi","server":"522ea794.5589c8","version":1,"debugenabled":false,"service_domain":"xiaomi_aqara","service":"play_ringtone","entityId":"","data":"{\"gw_mac\":\"78:11:DC:B2:14:11\",\"ringtone_id\":\"10018\",\"ringtone_vol\":\"100\"}","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":1490,"y":180,"wires":[[]]},{"id":"a5af39b4.99bb78","type":"switch","z":"912aed1e.4308b","name":"Superior a 16 Cº","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"Superior a 16 Cº","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1260,"y":140,"wires":[["9752d5a8.6561c8","940d46b0.7c7458"]]},{"id":"6ff6c68.fe32e38","type":"rbe","z":"912aed1e.4308b","name":"Bloquear a menos que el valor cambie","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1230,"y":500,"wires":[["163ee5c2.83a57a"]]},{"id":"163ee5c2.83a57a","type":"switch","z":"912aed1e.4308b","name":"ALARM","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"ALARM","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1460,"y":500,"wires":[["e8e266b7.7dbb88"]]},{"id":"a44a34c2.a4c0f8","type":"delay","z":"912aed1e.4308b","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":740,"y":540,"wires":[["3275fd00.d07422"]]},{"id":"3275fd00.d07422","type":"change","z":"912aed1e.4308b","name":"reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"reset","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1250,"y":560,"wires":[["e8e266b7.7dbb88"]]},{"id":"d48ca813.bf2b38","type":"comment","z":"912aed1e.4308b","name":"Sensor temperatura","info":"","x":150,"y":100,"wires":[]},{"id":"32765d3b.155a52","type":"comment","z":"912aed1e.4308b","name":"↑ +=16ºC / ↓ -16ºC","info":"","x":390,"y":120,"wires":[]},{"id":"179a1b6b.6b15d5","type":"comment","z":"912aed1e.4308b","name":"Flow si supera los 16ºC","info":"","x":740,"y":80,"wires":[]},{"id":"57cbb103.ec1dd","type":"comment","z":"912aed1e.4308b","name":"Flow si se repite los 16ºC","info":"","x":786.25,"y":436.25,"wires":[]},{"id":"522ea794.5589c8","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Notas del autor Explicación:

1- Cuando el sensor de temperatura zigbee xiaomi WSDCGQ11LM detecta que la temperatura es superior a 16ºC nos da una alarma a la APP y un mensaje de sonido a la Gateway de xiaomi de que la puerta del frigorífico se ha quedado abierta. Este mensaje no se vuelve a repetir hasta que la temperatura baje de 16ºC y posteriormente vuelva a subir. (Esta parte me funciona correctamente)

2- Además si el mensaje de temperatura de 16ºC se repite durante 3 veces consecutivas en el tiempo, a los 5 minutos nos da un nuevo mensaje en la APP y un mensaje de sonido a la Gateway de xiaomi de que la puerta del frigorífico se ha quedado abierta durante 5 minutos. Si la temperatura baja de 16ºC antes o después de los 5 minutos se reseta esta parte del flow. (Esta parte no me funciona, no me da el mensaje de los 5 minutos).

Final: En resumen lo que quiero es un mensaje en el momento exacto de cuando la temperatura supere o sea igual a 16ºC y si en el tiempo sigue siendo superior a 16ºC que de un nuevo mensaje de que sigue estando la temperatura por encima de ese valor y se repita cada 5 minutos, pero cuando la temperatura baje de ese valor que pare de mensajear.

Un Saludo.