Waschmaschinen mit Nagios / Icinga überwachen: check_gpio_pir

Winterzeit ist Bastelzeit! Ich habe die letzten Tage damit verbracht, mich verstärkt mit dem Raspberry Pi und PIR-Sensoren (Passive Infrared) zu beschäftigen. Mithilfe dieser Sensoren lassen sich Bewegungen erkennen – in Kombination mit GPIO-APIs lassen sich damit nützliche Anwendungen entwickeln.

Ein konkreter Einsatzzweck hat sich schnell gefunden – die Überwachung der im Keller stehenden Waschmaschine, die ich als Mensch mit wenig Zeit leider immer wieder vergesse. Mir kam die Idee, die blinkenden LEDs an der Gerätefront zu überwachen und automatisiert E-Mails bei Statusänderungen zu versenden. Da ich ohnehin Nagios bzw. Icinga zur Überwachung meines Netzwerkes verwende, bot sich hier die Entwicklung eines entsprechenden Plugins förmlich an. 🙂

Aufbau und Funktionsweise

Mein Aufbau besteht derzeit aus folgenden Bestandteilen:

  • Raspberry Pi B+ mit installiertem CRUX-ARM Linux
  • TP-Link AV500 Powerline Adapter Starter-Kit (TL-PA 4010P), da in meinem Keller kein WLAN-Signal empfangen werden kann
  • 5V PIR-Sensor (über eBay bestellt)
  • Standard-LED zur Anzeige registrierter Bewegungen
  • Breadboard und flexible Steckbrücken
Schaltung

Schaltung

Die Netzwerkverbindung zwischen meiner Wohnung und dem Keller habe ich mit Port Security abgesichert, um ungewollte Netzwerkteilnehmer zu vermeiden.

Die Schaltung sieht wie folgt aus:

  • GPIO #2 => VCC PIR (5 Volt)
  • GPIO #7 => OUT PIR (GPIO4)
  • GPIO #6 => GND PIR + LED (wird geteilt)
  • GPIO #11 => VCC LED (GPIO17)

Der PIR-Sensor wird mittels provisorischer Halterung an der Gehäusefront der Waschmaschine angebracht, um dort die Zeitanzeige zu überwachen. Leider verfügt meine Waschmaschine über keine LED, die eine abgeschlossene Reinigung anzeigt. Ich muss also demnach schauen, ob die Zeitanzeige noch blinkt – falls nicht, wartet die Wäsche darauf aufgehängt zu werden. Das bedeutet aber auch, dass ich derzeit das Monitoring explizit anschalten muss, da die Zeitanzeige ja nicht leuchtet, wenn die Waschmaschine ausgeschaltet ist. Hier muss ich mir noch etwas kreativeres einfallen lassen. 🙂

Sensor-Kalibrierung

PIR-Sensor

PIR-Sensor

Die meisten auf eBay angebotenen PIR-Sensoren verfügen über zwei Potentiometer, die das Verhalten des Sensors maßgeblich steuern.

Der erste Potentiometer regelt die Empfindlichkeit des Sensors, während der zweite die Zeitspanne, in welcher der Sensor ausgelöst wird, festlegt.

Standardmäßig sollten beide Potentiometer auf ca. 50% (mittig) eingestellt sein. Es empfiehlt sich die Empfindlichkeit auf den eigenen Aufbau abzustimmen. Mein Plugin verfügt über eine Debugging-Funktion (Parameter -d / –debug), bei welcher erkannte Bewegungen in der Konsole angezeigt werden. Alternativ können diese Beweungen auch über eine angeschlossene LED (Parameter -l / –enable-led) visualisiert werden falls keine Konsole zur Hand ist.

Voraussetzungen und Plugin

Python 2.x muss auf dem Raspberry Pi zur Verfügung stehen. Darüber hinaus benötigt mein Plugin das Python-Modul RPi.GPIO, welches kostenlos heruntergeladen werden kann. Das eigentliche Plugin kann von GitHub bezogen werden:

# wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.8.tar.gz
# tar xfz RPi.GPIO-0.5.8.tar.gz
# cd RPi.GPIO-0.5.8
# python setup.py install
# cd
# wget https://github.com/stdevel/check_gpio_pir/archive/master.zip
# unzip master.zip
# cd check_gpio_pir-master

Das Verhalten des Plugins kann über verschiedene Konfigurationsparameter gesteuert werden – eine Auswahl:

Parameter Beschreibung
-t / –seconds Zeitspanne, in der der Sensor überprüft wird
-c / –motion-threshold Schwellwert erkannter Bewegungen zur Auslösung einer Warnung
-v / –invert-match Invertierung, fehlende Bewegungen erzeugt Warnung

Beispiel: Überwachung mit vorgegebenen Werten (3 Bewegungen lösen Warnung aus, 15 Sekunden-Überwachung):

# ./check_gpio_pir.py
OK: motion counter (0) beyond threshold (3)

Die vollständige Dokumentation inklusive zahlreicher Beispiele kann auf GitHub eingesehen werden.

Nagios-/Icinga-Konfiguration

Um das Plugin in Nagios bzw. Icinga zu integrieren muss es in das entsprechende Plugin-Verzeichnis kopiert werden. Anschließend muss ein Kommando erstellt werden:

icinga# vi commands.cfg
...
define command{
        command_name check_local_pir
        command_line $USER2$/check_gpio_pir.py
}

ESC ZZ

Sollen Remote-Hosts überwacht werden, muss ein entsprechendes NRPE-Kommando auf dem Icinga-System und dem Remote-Host definiert werden:

icinga# vi commands.cfg
...
define command{
        command_name check_nrpe_pir
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 60 -c check_gpio_pir
}

ESC ZZ

remote# vi nrpe.cfg
...
command[check_gpio_pir]=/usr/lib/nagios/plugins/check_gpio_pir.py -v

ESC ZZ

Anschließend lässt sich der Sensor komfortabel überwachen! 🙂

Fotos

Anbei einige Fotos des Aufbaus:

10 Kommentare Schreibe einen Kommentar

    • Hi Micha,

      die Steckdose im Keller ist an meinen Stromkreislauf bzw. Stromzähler angebunden, daher funktioniert das reibungslos. Ich bin kein großer dLAN-Profi, meine aber während meiner Recherchen gelesen zu haben, dass es auch möglich ist, im selben Gebäude phasen- bzw. stromkreisübergreifend Verbindungen herzustellen – mit Geschwindigkeitsverlust. (Wenn ich hier falsch liege, möge man mich korrigieren!).

      Grüße,
      Christian!

  1. Hallo,

    schöne Lösung. Ich frage mich nur ob die Lösung wirklich funktioniert. Ich dachte die PIR-Sensoren erkennen nur die Veränderung der Infrarotstrahlung. Worauf hast du den PIR-Sensor denn ausgerichtet? Auf die Trommel der Waschmaschine?

    Gruß
    Christian

    • Hey!
      Im Testbetrieb hatte sie funktioniert – habe sie nur aktuell abgebaut, um mal ein schöneres Gehäuse anzufertigen (hatte den Sensor provisorisch mit Klebeband befestigt). Der Infrarot-Sensor ist auf das LC-Display ausgerichtet und schlägt aus, wenn dieses aus bzw. angeht. Das bedeutet – wenn das Display vorher an war und ausgeht (oder anders herum), wird ein Alarm generiert. Das war notwendig, da meine Waschmaschine keine dedizierte LED für ein abgeschlossenes Reinigungsprogramm hat.

      Beste Grüße,
      Christian!

      • Hallo Christian,

        danke, sehr interessant! Ich werde das selbst mal testen. Ich dachte PIR Sensoren reagieren nur auf eine Wärmeveränderung die bei einer normalen LED wohl kaum wahrnehmbar ist.

        Danke für die Anregung. Ich gebe dir Rückmeldung ob es bei mir geklappt hat.

        Gruß
        Christian

      • Hallo,

        deine Lösung funktioniert bei mir leider nicht. Ich habe einen identischen PIR Sensor der bei jeder Bewegung anschlägt. Auf das LCD Display der Waschmaschine oder LED schlägt der PIR Sensor nicht an. Das hätte mich auch sehr gewundert. Bis du sicher das die Lösung bei dir funktioniert und kein Messfehler vorliegt?

        Gruß

      • Hey Christian!

        Entschuldige die verspätete Antwort. Bei mir funktionierte das Setup tatsächlich. Ich habe den Sensor in eine kleine Box gebastelt und diese an der Front der Waschmaschine befestigt, um genauere Ergebnisse zu haben (das Umgebungslicht hat oft Ergebnisse verfälscht). Auch noch erwähnenswert ist, dass das Kalibrieren des Sensors durchaus einige Zeit benötigt. Ich glaube ich habe 2, 3 Tage immer mal wieder einige Optimierungen vorgenommen, bis ich mit den Ergebnissen zufrieden war.

        Ich hoffe, ich konnte dir helfen.

        Beste Grüße,
        Christian.

Schreibe einen Kommentar