ping-Watchdog per Shell-Skript via crontab - mit optionalem Triggern von Homematic-Systemvariablen

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
mademyday
Beiträge: 268
Registriert: 03.10.2014, 12:46
System: CCU
Wohnort: Enzkreis
Hat sich bedankt: 3 Mal
Danksagung erhalten: 43 Mal

ping-Watchdog per Shell-Skript via crontab - mit optionalem Triggern von Homematic-Systemvariablen

Beitrag von mademyday » 02.10.2022, 18:05

Hi!

Vorab:
- nicht unbedingt ein Homematic-Thema, es werden keine WebGUI-Programme/-Skripte benötigt, alles passiert auf dem zugrundeliegenden OS
- ich hab das nie mit der Idee entwickelt "ich stell das mal irgendwo vor, dass kann vielleicht jemand brauchen", soll heißen, es gibt kein userfriendly-Installskript o.ä.
- entwickelt habe ich das ganze schon vor einigen Jahren (2017), seit dem läuft das stabil auf meiner CCU2, lediglich die Device-Konfig-Datei wurde von Zeit zu Zeit an meinen Netzwerk-Geräte-Zoo angepasst (derzeit 22 Einträge)
- da ich nun auch eine CCU3 haben, habe ich das ganze jetzt wieder "in die Hand genommen" und dorthin umgezogen - und auch hier läuft das Skript bisher problemlos - mit folgender Ausnahme/Anmerkung: die crontab (root, crontab -e ...) auf der CCU3 ist nicht reboot-fest?! (weil ich noch viele andere Dinge direkt auf OS-Ebene mache, ohne die Homematic damit zu belämmern, habe ich ein automatisches crontab-Backup/-Restore auf meiner CCU3, so dass mich das hier nicht weiter stört; es gibt sicher verschiedene Wege eine Zeile dauerhaft in der crontab zu ver"ewigen"...)

Zum Thema:
Ich habe ein Shell-Skript erstellt, welches regelmäßig eine Liste von Netzwerkgeräten/IP-Adressen anpingt und das Ergebnis bei Statusänderung protokolliert und ggf darüber per Email etc. alarmiert und/oder eine Homematic-Systemvariable setzt.

Somit kann auf den Ausfall/das Ein- oder Ausschalten eines Gerätes eine individuelle Reaktion erfolgen (Benachrichtigung/Homematic-Programm auslösen/etc...).

Außer zur Verfügbarkeits-Überwachung (damit kein Gerät im Heimnetzwerk den leisen unbemerkten Abgang macht) nutze ich zB das Szenario "wenn abends im Wohnzimmer noch TV und/oder Receiver online/anpingbar ist/sind, dann verzögere das eigentlich zeitgesteuerte Aktivieren des AlarmNacht-Modus".

Der regelmäßige Aufruf des Skripts (zB alle 6 Mintuten) erfolgt via crontab.
Im Unterverzeichnis data wird bei Statuswechel (und nur dann) ein Timestamp in eine Device-bezogene .dat-Datei geschrieben.

watchdog.zip
ping-Watchdog per Shell-Skript via crontab
(557.21 KiB) 29-mal heruntergeladen
(sh/tcl/cgi: execute-Flag setzen!)

Eine grafische Darstellung der Verfügbarkeit der Netzwerkgeräte gibt es auch:
bsp220917-div.jpg
bsp220917-24h-1h-data-a.jpg
(zur Demo einmal mit eingeblendeten Timestamp-Daten)

Die Device-Konfig-Datei sieht zB so aus (localhost natürlich nur zur Demo):

Code: Alles auswählen

# Name   <tab>  MAC <tab> IP         <tab> options (zB HMvar=<sv>;use_hostname;notify;...)
demo-int        nv        127.0.0.1
demo-ext        nv        www.web.de       use_hostname;HMvar=vCCU_hat_Internet;notify
- Feldtrenner ist das Tabulator-Zeichen!
- MAC-Adressen sind hier/für dieses Skript unerheblich
- Option notify bedeutet, dass Statusänderungen gemeldet werden (zB per Email, TV-Msg., WhatsApp, ...)
- Option HMvar=vIPalive_IPCam bedeutet, dass eine boolsche-Homematic-Systemvariable analog zum ping-alive-Status gesetzt wird (hier: vIPalive_IPCam)
- Option use_hostname bedeutet, dass das Ziel wechselnde/mehrer IP-Adressen hat und deshalb unter seinem Namen protokolliert werden soll


Demo: manueller Check eines Dev.-Eintrags mit Eintrag in .dat-File:

Code: Alles auswählen

/usr/local/etc/config/addons/ste/watchdog # ./watchdog.sh demo-ext
# DEV=demo-ext;
ping demo-ext...
# DEVip='www.web.de'
# DEVopt='use_hostname;HMvar=vCCU_hat_Internet;notify'
# HMvar='vCCU_hat_Internet'

# --- 09:33:22 Uhr, Durchgang 1: ---

# RESip='(82.165.229.83)'
# RES1='5 packets transmitted, 5 packets received, 0% packet loss'
# RES2='5 packets transmitted, 5 packets received, 0% packet loss'
OK!

# DEVfile='./data/2022/demo-ext_(www.web.de).dat'
# LASTline=''
NEWstat!
# setze HM-Systemvariable 'vCCU_hat_Internet' auf 1 ...

/usr/local/etc/config/addons/ste/watchdog # cat data/2022/demo-ext_\(www.web.de\).dat
22-10-02 09:33  +       82.165.229.83

/usr/local/etc/config/addons/ste/watchdog # ./watchdog.sh demo-ext
# DEV=demo-ext;
ping demo-ext...
# DEVip='www.web.de'
# DEVopt='use_hostname;HMvar=vCCU_hat_Internet;notify'
# HMvar='vCCU_hat_Internet'

# --- 09:35:22 Uhr, Durchgang 1: ---

# RESip='(82.165.229.138)'
# RES1='5 packets transmitted, 5 packets received, 0% packet loss'
# RES2='5 packets transmitted, 5 packets received, 0% packet loss'
OK!

# DEVfile='./data/2022/demo-ext_(www.web.de).dat'
# LASTline='22-10-02 09:33      +       82.165.229.83'
-no change-

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“