Hallo,
hier also die komplette Lösung.
Der erste Schritt bezieht sich auf die Software IOBroker, welche mit Javascripte arbeitet.
Wenn dort der Energiezähler nicht mehr Antwortet startet folgendes Script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | function watchdog(watch) {
var update;
var timeInMs;
var diff;
update = getState("modbus.4.holdingRegisters.52321_Arbeit").lc;
timeInMs = Date.now();
diff = timeInMs - update;
setState("javascript.0.temp.diff"/*diff*/, diff);
if ( diff > 900000)
{
exec('touch /opt/iobroker/restart.do');
}
}
//schedule("* * * * *", function (watch) {
schedule("12,27,42,57 * * * *", function (watch) {
watchdog(watch);
});
|
Wichtig ist hier eigentlich nur diese Zeile:
exec('touch /opt/iobroker/restart.do');
Hier wird ein Datei erzeugt, das kann auch mit anderen Programmiersprachen geschehen.
Jetzt kommt das Skript welches kontrolliert ob die Datei vorhanden ist:
| if [ -a '/opt/iobroker/restart.do' ]
then
bash /opt/iobroker/restart.sh
fi
|
Dieses Skript wird per cron alle 15 min. gestartet.
Cron erzeugen mit sudo crontab -e.
Im crontab steht dann die Zeile:
| 13,28,43,58 * * * *bash /opt/iobroker/cronfile.sh
|
Jetzt noch das eigentliche Skript:
| #!/bin/bash
iobroker restart
rm -f /opt/iobroker/restart.do
|
}}}
Wie gesagt etwas kompliziert, aber es funktioniert erst ein mal.
Schöne Grüße
ThomasD