automatischer Restart/Reboot nach Stop

Antwort erstellen

Bestätigungscode
Gib den Code genau so ein, wie du ihn siehst; Groß- und Kleinschreibung wird nicht unterschieden.
Smilies
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: automatischer Restart/Reboot nach Stop

Re: automatischer Restart/Reboot nach Stop

von JoachimF » 12 Mär 2026 14:10

@Werner,

date -r war mir nicht bekannt
Aus der man page
-r, --reference=FILE
display the last modification time of FILE

und ich werde es auch zur Überwachung der DB benutzen.

Re: automatischer Restart/Reboot nach Stop

von Werner » 12 Mär 2026 13:10

@Joachim,
$FileSDB ??
Was prüfts du bzgl. der Datenbank?

Code: Alles auswählen

dzeit=$( date -r $FileSDB +%s )
Damit wird das Änderungsdatum der Datenbank geprüft.

Shelly-Steckdosen kann man auch nur Lokal nutzen und sind
eben ideal wenn man etwas automatisch steuern muß.

Re: automatischer Restart/Reboot nach Stop

von JoachimF » 12 Mär 2026 12:39

@Werner

meine Lösung sieht so aus :

Code: Alles auswählen

#!/bin/bash
#ECO Weewx

#Datum der Modify Zeit in Unixtime
bildzeit=$(stat /var/www/html/weewx/eco/dayhum.png --format='%Y')
#echo $bildzeit
#date -d@$bildzeit

#aktuelle Zeit minus 6 Minuten in Unixtime
sixminutezeit=$( date -d "6 minute ago" +%s )
#echo sixminutezeit

# Differenz größer 6 Minuten (360) erfolgt ein Restart
if [ "$sixminutezeit" -gt "$bildzeit" ] ; then
	echo "6 Minuten Differenz - Restart von ECO"
	sudo systemctl restart weewx1
fi
Ich vergleiche ein Bilderstellungsdatum mit der aktuellen Zeit (- 6m).
Sudo systemclt habe ich in der /etc/sudoers auf nopasswd gesetzt.

SmartHome habe ich nicht und werde ich auch nicht hier in Südfrankreich installieren.

$FileSDB ??
Was prüfts du bzgl. der Datenbank?

Re: automatischer Restart/Reboot nach Stop

von Werner » 12 Mär 2026 11:21

@Joachim,
Die Daten (z.B. Spannungen, Signale, RSSi) die fehlen, werden nicht auf der SDCard gespeichert
und können deshalb auch nicht von dort wiederhergestellt werden.


Ich überwache die Datenbanken der einzelnen Instanzen mit einem cronjob alle 5 Minuten
-> checkweew.sh -> */5 * * * * /etc/checkweewx.sh
(7 Instanzen von Weewx), Ja es laufen 7 Instanzen von WeeWx auf diesem RasPi !
wobei manche Ecowitt-Geräte unbedingt vorher Stromlos benötigen, dass mache ich mit
Shelly's - da ich mehrere Generation davon habe ist das auch im Script berücksichtigt
Das wird auch im Ordner /data protokolliert und alle config-Dateien von Weewx liegen bei
mir unter /etc/weewx/weewx?.conf (sind durchnummeriert)

Code: Alles auswählen

#!/bin/bash

#*/5 * * * * /etc/checkweewx.sh

# Debug-Optionen
set -o nounset
CheckTime=$(((5*60)+5)) 

dtz=$( /bin/date +'%Y/%m/%d %H:%M:%S' )
#echo "$dtz - CheckWeewx" >> /data/checkweewx.txt

CheckWeewx() {
  vzeit=$( date -d "5 minute ago" +%s )
  #dzeit=$( date -r $FileSDB +%s )
if [ -f "$FileSDB" ]; then
   dzeit=$( date -r $FileSDB +%s )
else 
   dzeit=$vzeit
   echo "$dtz - Nr:$nr - not found $FileSDB" >> /data/checkweewx.txt
fi


  TimeDiff=$[vzeit - dzeit]
  #echo "Nr:$nr - $TimeDiff - c:$CheckTime - v:$vzeit - d:$dzeit" >> /data/checkweewx.txt
  if [ ${TimeDiff} -ge ${CheckTime} ]
   then
    echo "$dtz - Restart Nr:$nr - TimeDiff:$TimeDiff $FileSDB" >> /data/checkweewx.txt
    sudo /etc/init.d/weewx$nr restart 
   #else
   # echo "Nr:$nr - $TimeDiff - alles ok"
  fi
}

CheckWeewxShelly() {
  vzeit=$( date -d "5 minute ago" +%s )
  #dzeit=$( date -r $FileSDB +%s )
if [ -f "$FileSDB" ]; then
   dzeit=$( date -r $FileSDB +%s )
else 
   dzeit=$vzeit
   echo "$dtz - Nr:$nr - not found $FileSDB" >> /data/checkweewx.txt
fi


  TimeDiff=$[vzeit - dzeit]
  #echo "Nr:$nr - $TimeDiff - c:$CheckTime - v:$vzeit - d:$dzeit" >> /data/checkweewx.txt
  if [ ${TimeDiff} -ge ${CheckTime} ]
   then
    echo "$dtz - Power Off Nr:$nr - TimeDiff:$TimeDiff $FileSDB" >> /data/checkweewx.txt
    curl http://$IPShelly/relay/0?turn=off
    sleep 15
    dtz=$( /bin/date +'%Y/%m/%d %H:%M:%S' )
    echo "$dtz - Power On Nr:$nr" >> /data/checkweewx.txt
    curl http://$IPShelly/relay/0?turn=on
    sleep 15
    dtz=$( /bin/date +'%Y/%m/%d %H:%M:%S' )
    echo "$dtz - Restart Nr:$nr - TimeDiff:$TimeDiff $FileSDB" >> /data/checkweewx.txt
    sudo /etc/init.d/weewx$nr restart 
   #else
   # echo "Nr:$nr - $TimeDiff - alles ok"
  fi
}

CheckWeewxShellyNew() {
  vzeit=$( date -d "5 minute ago" +%s )
  #dzeit=$( date -r $FileSDB +%s )
if [ -f "$FileSDB" ]; then
   dzeit=$( date -r $FileSDB +%s )
else 
   dzeit=$vzeit
   echo "$dtz - Nr:$nr - not found $FileSDB" >> /data/checkweewx.txt
fi


  TimeDiff=$[vzeit - dzeit]
  #echo "Nr:$nr - $TimeDiff - c:$CheckTime - v:$vzeit - d:$dzeit" >> /data/checkweewx.txt
  if [ ${TimeDiff} -ge ${CheckTime} ]
   then
    echo "$dtz - Power Off Nr:$nr - TimeDiff:$TimeDiff $FileSDB" >> /data/checkweewx.txt
    curl "http://$IPShelly/rpc/Switch.Set?id=0&on=false"
    sleep 15
    dtz=$( /bin/date +'%Y/%m/%d %H:%M:%S' )
    echo "$dtz - Power On Nr:$nr" >> /data/checkweewx.txt
    curl "http://$IPShelly/rpc/Switch.Set?id=0&on=true"
    sleep 15
    dtz=$( /bin/date +'%Y/%m/%d %H:%M:%S' )
    echo "$dtz - Restart Nr:$nr - TimeDiff:$TimeDiff $FileSDB" >> /data/checkweewx.txt
    sudo /etc/init.d/weewx$nr restart 
   #else
   # echo "Nr:$nr - $TimeDiff - alles ok"
  fi
}

#nr=
#FileSDB=/var/lib/weewx/weewx.sdb
#CheckWeewx

nr=1
FileSDB=/var/lib/weewx/weewx_ecowitt2.sdb
IPShelly=192.168.0.144
CheckWeewxShellyNew

nr=2
FileSDB=/var/lib/weewx/weewx_ecowitt.sdb
CheckWeewx

nr=3
FileSDB=/var/lib/weewx/weewx_wlludp.sdb
CheckWeewx

nr=4
FileSDB=/var/lib/weewx/weewx_ecowitt4.sdb
CheckWeewx

nr=5
FileSDB=/var/lib/weewx/weewx_ecowitt3.sdb
CheckWeewx

nr=6
FileSDB=/var/lib/weewx/weewx_ecowitt6.sdb
CheckWeewx

nr=7
FileSDB=/var/lib/weewx/davisconsole.sdb
CheckWeewx
Du mußt sehr wahrscheinlich das ändern bzw. auch den Log-Pfad (/data ) bzw. bei Shelly die IP-Adresse:

Code: Alles auswählen

sudo /etc/init.d/weewx$nr restart 
zu

Code: Alles auswählen

sudo systemclt restart weewx$nr 

automatischer Restart/Reboot nach Stop

von JoachimF » 12 Mär 2026 08:46

Kurz nach Mitternacht ist die Weewx Ecowitt Instanz (GW3000) stehen geblieben.
daytempdew.png
daytempdew.png (16.54 KiB) 176 mal betrachtet
Einige Daten, wie z.B. Temperatur, werden nach einem 'sudo systemclt restart weewx' automatisch wieder nachgetragen,
aber nicht alle Daten.
Ich würde mir ein Script erstellen, welches bei Ausbleiben von Daten einen automatischen Restart ausführt.
Welches Kriterium wäre dafür geeignet?
Alter der Grafiken in der Html, Syslog ?

Nach oben