Für alle, die wenig Linux / Bash Erfahrung haben die Erläuterungen dazu:
Skript von oben nach unten mit Erläuterungen
#!/bin/bash
Ich bin ein Bash-Skript, dann weiss Linux damit umzugehen
SMH_LOG=/Pfad/zur/Logdatei/Logdatei.log
Hier wird ein Logbuch auf dem Linux-Server angelegt ==> MUSS angepasst werden
active=0
Variable für das Zählen der aktiven Geräte ==> NICHT ÄNDERN
debugPC=1
Wenn debugPC=1 stehen in der Logdatei, welche Geräte gefunden wurden. Wenn
debugPC=0, steht nur wieviele Geräte gefunden wurden aber nicht welche (kleineres Log) ==> Individuell anpassen, wie du es haben möchtest
ASRV_CLIENTS[0]=„IP.IP.IP.1“
ASRV_CLIENTS[1]=„IP.IP.IP.2“
# Kann um weitere Geräte ergänzt werden
Also bei 3 Geräten weitere Zeile mit ASRV_CLIENTS[2]=„1.2.3.4“ usw. ==> MUSS ANGEPASST WERDEN
i=0
while [ $i -lt ${#ASRV_CLIENTS[*]} ]
do
ping -c1 ${ASRV_CLIENTS[$i]} -W1
if [ $? -eq 0 ]
then
if [ $debugPC = „1“ ]
then
In diesem Block NICHTS ÄNDERN!!
echo „$(date +‚%Y-%m-%d %H:%M:%S‘) - DEBUG: ${ASRV_CLIENTS[$i]} an“ | tee -a $SMH_LOG
Schreibt ins Log welches Gerät gefunden wurde. Wenn du das anpassen möchtest, Zwischen den " steht was ins Logfile geht. Im ersten Teil das Datum, Anpassung nur, wenn du weisst was du tust
fi
(( active++ ))
fi
(( i++ ))
done
NICHTS ÄNDERN! Was passiert? Wenn ein Gerät gefunden wurde zählt active eins hoch und i zählt eins hoch um das nächste Gerät zu prüfen
echo -n "$(date +'%Y-%m-%d %H:%M:%S') - $active Gerät/e an --> " | tee -a $SMH_LOG
Schreibt ins Logbuch wieviele Geräte eingeschaltet waren. Auch hier kannst du das Log anpassen, wenn du weisst was du tust, aber keine Änderung notwendig
if [ $active = "0" ]
then
Prüfung ob Gerät gefunden wurde, wenn nicht werden die folgenden Zeilen ausgeführt
echo -n "homee Gerät ausschalten > " | tee -a $SMH_LOG
Eintrag fürs Logfile, in deinem Fall also nicht homee Gerät ausschalten, sondern: WebHook „keinGerätgefunden“ wird ausgelöst. Oder wie auch immer du das im Logfile stehen haben möchtest. Kannst es auch so lassen, aber dann steht im Logfile halt dass Homee ein Gerät ausschaltet
curl "http://<LOKAL_IP:7681/api/v2/webhook_trigger?webhooks_key=&event=" >> $SMH_LOG
Hier der Webhook der aufgerufen wird, wenn KEIN Gerät gefunden wurde
Dieser Aufruf muss angepasst werden (alles zwischen den "). Wenn du das Homeegramm, was ausgelöst werden soll, wenn keines der Geräte gefunden wurde, dann zeigt er dir in der Homee-Administration diesen Link an. Es muss also die lokale IP von deinem Homee rein, dein Homee hat einen webhooks_key=…Ellenlanger Sicherheitsschlüssel…&event=…Homeegramm-Name…
Das siehst du aber alles, wenn du das Homeegramm anlegtst.
echo „“ | tee -a $SMH_LOG
else
echo -n "homee Gerät einschalten > " | tee -a $SMH_LOG
Eintrag fürs Logfile, in deinem Fall also nicht homee Gerät ausschalten, sondern: WebHook „Gerätgefunden“ wird ausgelöst. Oder wie auch immer du das im Logfile stehen haben möchtest. Kannst es auch so lassen, aber dann steht im Logfile halt dass Homee ein Gerät einschaltet
curl "http://<LOKAL_IP:7681/api/v2/webhook_trigger?webhooks_key=&event=" >> $SMH_LOG
Hier der Webhook der aufgerufen wird, wenn MINDESTENS EIN Gerät gefunden wurde
Dieser Aufruf muss angepasst werden (alles zwischen den ").
Gilt gleiches wie oben, nur dass hier ein anderes Homeegramm aufgerufen wird. &event=…Homeegramm-Name… muss also anders aussehen, der Rest ist gleich oben
echo "" | tee -a $SMH_LOG
fi
Hier nichts ändern, sorgt dafür, dass der nächste Log-Eintrag in eine neue Zeile kommt.