Blog der Heimetli Software AG

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
done
Das 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 ...