Reiniciar Domoticz si esta caído mediante Node Red

jondi del grupo «Domoticz a lo spain» de telegram nos explica cómo reinicia domoticz si esta caído utilizando un flow en nodered.

Dividimos esta guía en varios apartados

Requisitos inciales

Para poder seguir este tutorial es necesario tener instalado Node Red en nuestra Raspberry: «Cómo instalar node red en nuestra raspberry pi«.

Descarga del software necesario

Damos por hecho que ya tenemos el software necesario a consecuencia del seguimiento del tutorial anterior para instalar Node red.

Configuración en Node Red

Abrimos node red (Recuerda que accedemos a ella introduciendo la IP de nuestra raspberry seguido de :1880) y empezamos instalando un plugin. Sigue las indicaciones de las imágenes:

Buscamos el plugin a cargar en node red: node-red-contrib-telegrambot, y lo instalamos.

A continuación cargamos el flow que os adjuntamos de la siguiente manera:

Introducimos en el recuadro siguiente texto (lo copiamos con control +c) y lo pegamos en el recuadro (con control + v):

[{"id":"9ecc4461.ad99c8","type":"tab","label":"Domoticz STATUS","disabled":false,"info":""},{"id":"8a5d5bae.240578","type":"inject","z":"9ecc4461.ad99c8","name":"Get Domoticz Status","props":[{"p":"payload","v":"","vt":"date"},{"p":"topic","v":"","vt":"string"}],"repeat":"180","crontab":"","once":true,"onceDelay":"200","topic":"","payload":"","payloadType":"date","x":160,"y":120,"wires":[["906dd50a.691378"]]},{"id":"906dd50a.691378","type":"http request","z":"9ecc4461.ad99c8","name":"Get Domoticz Status","method":"GET","ret":"obj","paytoqs":"ignore","url":"http://192.168.4.180:8080/json.htm?type=command&param=getversion","tls":"","persist":false,"proxy":"","authType":"basic","x":160,"y":180,"wires":[["65e3af00.40771"]]},{"id":"65e3af00.40771","type":"switch","z":"9ecc4461.ad99c8","name":"Check Domoticz Status","property":"payload.status","propertyType":"msg","rules":[{"t":"eq","v":"OK","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":170,"y":240,"wires":[["978be539.c42f08"],["6ec59337.285e9c"]]},{"id":"6ec59337.285e9c","type":"function","z":"9ecc4461.ad99c8","name":"Count","func":"// initialise the counter to 0 if it doesn't exist already\nvar count = flow.get('count')||0;\ncount += 1;\n// store the value back\nflow.set('count',count);\n// make it part of the outgoing msg object\nmsg.count = count;\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":260,"wires":[["fa119a06.c50f78"]]},{"id":"978be539.c42f08","type":"function","z":"9ecc4461.ad99c8","name":"Count Reset","func":"// Reset the counter\nvar count = 0;\nflow.set('count',count);\n// make it part of the outgoing msg object\nmsg.count = count;\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":220,"wires":[[]]},{"id":"fa119a06.c50f78","type":"switch","z":"9ecc4461.ad99c8","name":"Count Evaluation","property":"count","propertyType":"msg","rules":[{"t":"gte","v":"2","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":590,"y":260,"wires":[["5af9046f.6ba23c"]]},{"id":"5af9046f.6ba23c","type":"exec","z":"9ecc4461.ad99c8","command":"sudo /etc/init.d/domoticz.sh","addpay":false,"append":"stop","useSpawn":"false","timer":"30","oldrc":false,"name":"Domoticz stop","x":660,"y":160,"wires":[[],[],["23c07107.2dbd9e","d490cb5e.938ae8"]]},{"id":"23c07107.2dbd9e","type":"exec","z":"9ecc4461.ad99c8","command":"sudo /etc/init.d/domoticz.sh","addpay":false,"append":"start","useSpawn":"false","timer":"","oldrc":false,"name":"Domoticz start","x":880,"y":200,"wires":[[],["58648a43.6322e4"],["58648a43.6322e4"]]},{"id":"58648a43.6322e4","type":"function","z":"9ecc4461.ad99c8","name":"Count Reset","func":"// Reset the counter\nvar count = 0;\nflow.set('count',count);\n// make it part of the outgoing msg object\nmsg.count = count;\nreturn msg;","outputs":1,"noerr":0,"x":1070,"y":220,"wires":[[]]},{"id":"d490cb5e.938ae8","type":"function","z":"9ecc4461.ad99c8","name":"REINICIA","func":"msg.payload = {chatId :-371823045, \n type : 'message',\n content : 'REINICIO DOMOTICZ RPI4' }\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":860,"y":140,"wires":[["de2844a5.da5f98"]]},{"id":"de2844a5.da5f98","type":"telegram sender","z":"9ecc4461.ad99c8","name":"TELEGRAM","bot":"","x":1030,"y":60,"wires":[[]]}]

Y tras pegar el texto clicamos sobre IMPORT:

Veremos que se nos carga una pestaña nueva denominada Domoticz STATUS. Clicamos sobre ella:

Configuramos a nuestro gusto:

  • Datos de telegram.
  • IP y puerto de domoticz.
  • Y el mensaje a vuestro gusto.

Importante tener en cuenta...

Si el flow detecta que está caído domoticz y en realidad lo está actualizando, entonces se corrompe al levantar el flow el servicio.

Por ello, si actualizáis el sistema deshabilitar el flow hasta que termine la actualización.

Cómo localizar errores en node red

Os damos un truquito para vuestra información. Tenemos un node en el listado de la izquierda que se llama DEBUG. Cuando lo llevamos a la pantalla principal, lo conectamos a un node y lo activamos, nos dá mucha información (como un LOG) en la columna de la derecha del todo. Os explicamos con unas cuantas imágenes cómo conseguirlo:

Mantén el cursor pulsando la bola del final del recuadro del mqtt/in y arrástrala hasta la bola del inicio del recuadro del debug:

Clicamos sobre deploy:

Activamos la cucaracha y a la derecha nos aparecerá el debug con info de errores /( y así podremos analizar qué estamos haciendo mal) o info correcta:

Inicio automático de Node RED con Raspberry Pi

Recordar que por defecto Node RED está apagado. Podemos iniciarlo de dos formas diferentes: manual o automático.

Para inicio manual introducimos en puTTY:

node-red-start

Para que Node Red inicie de forma automática (tras caídas de red, o tras apagar y encender la raspberry) lanzamos el siguiente comando en puTTY:

sudo systemctl enable nodered.service

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!