Hallo,
ich habe eine mumbi m-TG102 Funk Türklingel, die auf 433MHz sendet und empfängt. Nun würde ich gerne mithilfe des Pis ein Script ausführen, sobald geklingelt wird. Ich kann die eben geschriebenen Scripts nicht mehr pasten, weil sich der Pi (bzw. die SD Karte) gerade verabschiedet hat. Ungefähr so bin ich aber vorgegangen:
* Pilight installiert
* 433utils installiert (mit WiringPi Bibliothek)
* XD-RF-5V Modul angeschlossen
* XD-RF-5V Modul nach extrem schlechter Performance weggeworfen und gegen anderes Modul (dessen Bezeichnung ich leider nicht mehr heraus bekomme; auf dem Modul steht "LA-0501-01 FR4", was aber keine weiterführenden Infos mit sich bringt)
sudo ./RFSniffer (im zugehörigen Verzeichnis) liest absolut nichts aus bzw. erzeugt im Terminal keine Ausgabe.
sudo pilight-receive hingegen schon. Der Sender meiner Türklingel kann deutlich an der uuid identifiziert werden.
Also Verzeichnis /home/pi/ding/ erstellt, dort existieren folgende Dateien
* trigger.sh
* read-log.sh
* pilight-receive.log
* dingdong.py
Die Dateien hatten ungefähr folgenden Inhalt (wie gesagt, SD ist futsch und da ich mitten bei der Arbeit war, hatte ich von den Files leider noch kein Backup erstellt)
* trigger.sh
#!/bin/bash
while true
do
sudo pilight-receive > /home/pi/ding/pilight-receive.log
sleep 3
echo "." > /home/pi/ding/pilight-receive.log
done
Hiermit wollte ich bezwecken, dass die pilight-receive.log Datei regelmäßig entleert wird; getriggert wird nämlich, wenn die bestimmte uuid in der Datei enthalten ist, und würde ich die Datei nicht regelmäßig leeren, würde das nicht funktionieren.
* pilight-receive.log
entweder ".", oder die von sudo pilight-receive erzeuge Ausgabe
* read-log.sh
#!/bin/bash
while true
do
if grep -q "<uuid-der-klingel>" /home/pi/ding/pilight-receive.log
then
python /home/pi/ding/dingdong.py
else
echo "nein."
fi
end
Alles anzeigen
(else echo "nein." könnte theoretisch vollständig weggelassen werden. Zu Testzwecken war mir diese kurze Bash Datei aber ausreichend)
* dingdong.py
Schickt mithilfe von cURL eine definierte Nachricht plus Zeitstempel an eine festgelegte URL. Dadurch werden meine Freundin und ich per Telegram Bot benachrichtigt, sobald es klingelt (Alternative wäre Pushover, da Telegram aber auf all unseren Geräten installiert ist, war mir diese Lösung lieber)
PROBLEM
Scheinbar ist das wiederholte Aufrufen von pilight-receive durch die while Schleife nicht ideal. Irgendwann bekam ich nur eine komische Fehlermeldung, dass keine Daten empfangen werden konnten. Hier muss eine andere Lösung gefunden werden. Vielleicht ist der Zeitabstand zu gering, sodass pilight-receive einfach zu häufig aufgerufen wird und dadurch crasht. Vielleicht liegt der Fehler auch ganz woanders, der Pi hat sich ja nach dem Reboot leider nicht mehr per ssh erreichen lassen.
Wie würdet Ihr weiter vorgehen? Danke im Voraus für Eure Hilfe ::)