in Domotica

Come tenere Domoticz sempre attivo

Dato che molto spesso tra sensori vari o thread aperti da plugin non troppo funzionanti Domoticz può smettere di funzionare da un punto all’altro, il mio suggerimento è quello di crearvi uno script gestito dal crontab e fare in modo che controlli ogni minuto se è attivo. E nel caso, lo riattivi. Presupponendo che l’abbiate installato nella home del vostro Raspberry Pi (nel caso cambiate semplicemente path):

sudo nano /home/pi/domoticz/scripts/checkdomoticz.sh

Incollate:

#!/bin/bash

ip=127.0.0.1
port=8080
idx=1

function jsonValue() {
KEY=$1
num=$2
awk -F"[,:}]" '{for(i=1;i<=NF;i++){if($i~/'$KEY'\042/){print $(i+1)}}}' | tr -d '"' | sed -n ${num}p
}

DOMOTICZ=`curl -s --connect-timeout 2 --max-time 5 "http://$ip:$port/json.htm?type=devices&rid=$idx"`
STATUS=$(echo $DOMOTICZ | jsonValue status 1)
OK="OK"

echo "Domoticz status = $STATUS"

if [ "$STATUS" == "" ] ; then

echo Domoticz status NOK1, retrying in 5 seconds...
sleep 5
DOMOTICZ=`curl -s --connect-timeout 2 --max-time 5 "http://$ip:$port/json.htm?type=devices&rid=$idx"`
STATUS2=$(echo $DOMOTICZ | jsonValue status 1)
echo Domoticz status = $STATUS2

if [ "$STATUS2" == "" ] ; then
echo Domoticz status NOK2, retrying in 5 seconds...
sleep 5
DOMOTICZ=`curl -s --connect-timeout 2 --max-time 5 "http://$ip:$port/json.htm?type=devices&rid=$idx"`
STATUS3=$(echo $DOMOTICZ | jsonValue status 1)
echo Domoticz status = $STATUS3

if [ "$STATUS3" == "" ] ; then
echo Domoticz status NOK3, stopping service, killing process, starting service...
sudo service domoticz stop
sleep 5
sudo service domoticz start
fi
fi
fi

Ora eseguite: sudo crontab -e

E aggiungete in fondo:

* * * * * /home/pi/domoticz/scripts/checkdomoticz.sh

Questo controllerà ogni minuto se è attivo, così male che vada (e nel caso non ci siano ovviamente problemi gravi) Domoticz vi rimarrà disattivato al massimo per 1 minuto.

Scrivi un commento

Commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

  1. Ciao Marco,
    Ho trovato il tuo script interessante, funziona molto bene anche troppo, in quanto mi sono accorto in qualsiasi caso che ogni minuto Domoticz viene riavviato, guardando da terminale l’esecuzione dello script mi sono accorto che dopo “STATUS=” non appare nulla come se non scrivesse lo stato. L’ip la porta e l’idx sono quelli del tuo script e provando ad inserirli nel browser, l’apparato risponde. Purtroppo non sono molto pratico degli script e quindi non riesco a verificare quale posa essere il problema, puoi darmi una mano?
    Grazie
    Marco