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