GPIO-Pin auf dem Raspberry PI mit einem Timer überwachen und loggen
Eine neue Anforderung an das Logging-Script: Es soll nur noch das Einschalten geloggt werden, und Schaltvorgänge die weniger als zwei Minuten auseinander liegen, sollen unterdrückt werden.
Das Logfile liegt im Directory /var/www, so dass man es direkt mit dem Browser ansehen kann.
Das kommentierte Script
#!/bin/bash # Das GPIO-Pin kann hier definiert werden PIN=4 # Verhindert eine Fehlermeldung wenn das Script # mehrfach gestartet wird if [ ! -e /sys/class/gpio/gpio$PIN ] then echo "$PIN" > /sys/class/gpio/export fi # Definiert den Pin als Eingang echo "in" > /sys/class/gpio/gpio$PIN/direction # Zustand beim Start des Scripts bestimmen previous=$(cat /sys/class/gpio/gpio$PIN/value) timer=0 while true do # Pin einlesen pin=$(cat /sys/class/gpio/gpio$PIN/value) # Pruefen ob der Eingang auf High gewechselt hat if [ $pin -gt $previous ] then # Aktuelle Zeit in Sekunden bestimmen now=$(date +%s) # Wenn die Wartezeit abgelaufen ist if [ $now -gt $timer ] then # Wechsel protokollieren echo "$(date '+%d.%m.%Y %H:%M')" >> /var/www/log.txt echo "$(date '+%d.%m.%Y %H:%M')" fi # Wartezeit setzen (( timer = now + 120 )) fi previous=$pin
# Eine halbe Sekunde warten sleep 0.5 doneDas Script herunterladen
Das Script muss natürlich ausführbar sein. Das machen Sie mit dem Befehl chmod 755 timedlogger auf der Kommandozeile oder mit Ihrem Lieblings-Filemanager.
Das Script muss mit root-Rechten laufen. Auf der Kommandozeile kann es so gestartet werden:
sudo ./timedlogger
Das Logfile mit dem Browser ansehen
Ganz einfach: im Browser die IP-Adresse vom PI gefolgt von /log.txt eingeben und schon erscheint das Logfile im Browser.
Beispiel:
http://192.168.1.21/log.txt
Ein Webserver muss dazu natürlich installiert sein ...