Zur Einleitung eine kleine Geschichte die sich vor etwas mehr als 3 Wochen ereignete...
Es war Sonntag und ich hatte endlich mal wieder Zeit für meine Familie. Die Sonne schien und es versprach ein warmer Frühlingstag zu werden. Nach einem ausgiebigen Frühstück spielte ich mit den Kindern im Garten. Gegen 11:00 Uhr beschloss ich, wie jeden Sonntag, zu kochen. Aber zuvor steckte ich noch eine externe Festplatte an unser NAS und startete ein Voll-Backup. Eine knappe Stunde später, ich hatte gerade ein paar Schweinelenden in der Pfanne, ging plötzlich der Herd aus...
Ein kurzer Blick in den Sicherungskasten signalisierte mir: " bei uns alles i.O." Ein Blick aus dem Küchenfenster zu meinen Nachbarn und es war klar wir haben Stromausfall.
Ui das hatten wir schon lange nicht mehr. An einem Sonntag bei herrlichem Frühlingswetter eher unerwartet. 5 Minuten und einen Handy-Anruf im Nachbarort später war klar das es nur lokal in unserem Ort keinen Strom gibt und es höchstwarscheinlich keine größere Katastrophe gegeben hat.
Prima dachte ich das ist der ideale Zeitpunkt für eine kleine Notfallübung. Also haben wir den Gaskocher auf den Balkon gestellt und unter den neidischen Blicken der Nachbarschschaft gemütlich fertig gekocht. Nach knapp einer Stunde, wir waren mittlerweile bereits mit dem Essen fertig, kam dann der Strom wieder und unsere Nachbarschaft konnte auch endlich fertig kochen.
Eigentlich sollte die Geschichte jetzt zu Ende sein aber leider musste ich später entdecken das meine externe Festplatte den Stromausfall nicht überlebt hat.
Die nächsten Tage hat mich das Thema, Stromausfall, Datensicherheit meines NAS stark beschäftigt. Beschäftigt man sich mit diesen Themen werden die Anforderungen, Wünsche größer. Schnell enstand eine Wunschliste:
- Überwachung des Stromnetzes
- Überbrückung von Stromausfällen bis 2h für kritische Hardware (DSL-Router + TK Anlage)
- sicherer Shutdown von NAS und Server
- Überwachung von einzelnen Stromkreisen
- Überwachung von Brandmeldern
- Überwachung von Temperatur und Feuchtigkeit
Was habe ich bereits realisiert:
Mittlerweile steht bei mir eine kleine APC BACK UPS 550. Diese ist mit einem USB Kabel an einem Raspberry PI angeschlossen. Zur Überwachung des Stromnetzes nutze ich das Program apcupsd welches auf dem Raspberry installiert ist. Dies frägt alle 30sec die ab und ermittelt die aktuell anstehende Netzspannung. Das ganze kann man dann in einer Weboberfläche auch ansehen. Daneben werden bei Events verschiedene Scripte ausgeführt. Zum Beispiel wenn die bei Stromausfall auf Batterie geht. Dann sendet mir der Raspberry eine email (über das tool ssmtp) und fährt per script das NAS und Server herunter. Somit sind an der nur noch der DSL-Router und der Raspberry angeschlossen. Nun reicht die für knapp 2h Stromausfall aus. Viel länger macht keinen Sinn da dann die Batterien im HVT auch den Geist aufgeben und Telefonie und Internet nicht mehr zur Verfügung stehen.
Sollte der Strom vor dem Ende der Kapazität wieder zur Verfügung stehen erhalte ich ebenfalls eine Statusmail und der Server und das NAS werden nach dem der Strom 5 Min lang wieder da ist wieder hoch gefahren (gesteuert vom Raspberry).
Sollte der Strom bis zum Ende der Kapazität nicht zur Verfügung stehen schaltet sich der Raspberry dann bei einer Restlaufzeit von 1Min (wird von der gemeldet) ebenfalls ab. Ist der Stromausfall beendet fährt der Raspberry dann automatisch wieder hoch und weckt alle Geräte wie gehabt auf.
Die einzelnen Szenarien habe ich mittlerweile mehrfach durchgespielt und funktionieren in meinen Augen hervorragend. Das schöne war es gab schon sehr gute Tools die das ganze ohne große Programierkenntnisse ermöglicht haben. Für alle bei denen ich gerade die Neugierde geweckt habe ein paar Stichworte: apcupsd, apcupsd-cgi, ssmtp
An was arbeite ich gerade:
Im Moment bin ich gerade daran meine Rauchmelder zu vernetzen und diese zu Überwachen. Ich habe Rauchmelder von Flammex im Einsatz. Diese bieten die Möglichkeit sich über einen Bus zu vernetzen. Im Brandfall pfeifen dann alle Melder los. Da ich das für eine Gute Idee hielt habe ich vor ein paar Jahren bei einer Renovierung in alle Räume zu den Brandmeldern ein passendes Kabel gezogen. Für diesen Meldebus gibt es auch ein Hilfsrelais um Potentialfrei ein Alarm abzugreifen. Diese können dann an einen der GPIO Pins des Raspberrys angelegt werden. Auf dem Raspberry läuft dann ein Cronjob der alle 10sec den Zustand des Pins abfrägt und bei einer Statusänderung eine Mail an mich sendet. Die GPIO Pins können mit einfachen Befehlen abgerufen werden und den Mailversand übernimmt dann wieder ssmtp. Hier bin ich noch in der Testphase. Im Moment funktioniert die manuelle Abfrage von GPIO Pins. Das ganze muss ich jetzt noch in ein kleines Script verpacken und per Cronjob ausführen lassen. Mit dem gleichen Script werde ich zukünftig auch die Zustände einzelner Stromkreise abrufen können. Hierzu habe ich an meinen Leitungsschutzschalten (Sicherungen) Hilfsschalter angebaut die mir ebenfalls Potentialfrei den Zustand der einzelnen Stromkreise meldet.
Was kommt als nächstes:
Ich möchte noch in allen Räumen die Temperaturen auslesen und in eine Datenbank schreiben. Hierzu werde ich ebenfalls auf schon fertige Tools zurückgreifen. Für den Raspberry gibt es schon fertige Scripte die dies über den I2C Bus möglich machen. Hierzu kann ich noch frei Aderpaare meiner Brandmeldekabel nutzen. Daneben möchte ich die ganzen Steuerungen noch in einer Webseite abrufbar machen. Hier soll es dann auch möglich sein Probealarme zu generieren um die einzelnen Scripte zu überprüfen. Und in einer etwas ferneren Zukunft möchte ich neben dem Mailversand auch noch eine Benachrichtigung bei kritischen Alarmen (Stromausfall, Feuer) per SMS realisieren. Hierzu wird vermtl. ein etwas älteres Handy benutzt werden.
So genug geplappert hier mal als kleiner Appetithappen eine Stromausfallmail:
Es gibt einen Stromausfall in Musterstr 123. Server + NAS werden in 30sek heruntergefahren.
APC : XXXX
DATE : 2013-05-30 17:13:43 +0200
HOSTNAME : raspberrypi-GLT
VERSION : 3.14.10 (13 September 2011) debian
UPSNAME : 1OG
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2013-05-30 16:35:45 +0200
MODEL : Back-UPS RS 550G
STATUS : ONBATT
LINEV : 000.0 Volts
LOADPCT : 13.0 Percent Load Capacity
BCHARGE : 092.0 Percent
TIMELEFT : 31.4 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
SENSE : Medium
LOTRANS : 176.0 Volts
HITRANS : 282.0 Volts
ALARMDEL : No alarm
BATTV : 13.2 Volts
LASTXFER : Unacceptable line voltage changes
NUMXFERS : 3
XONBATT : 2013-05-30 17:13:38 +0200
TONBATT : 6 seconds
CUMONBATT: 178 seconds
XOFFBATT : 2013-05-30 17:10:00 +0200
SELFTEST : NO
STATFLAG : 0x07060010 Status Flag
SERIALNO : xxxxxxxxxxxxxxxxxxxxxxx
BATTDATE : 2013-02-02
NOMINV : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 330 Watts
FIRMWARE : 857.L4 .I USB FW:L4
END APC : 2013-05-30 17:13:44 +0200
Sollte Interesse an dem Projekt bestehen würde ich einzelne Bereiche genauer erklären. Alle Teilbereiche des Projekts können auch einzeln realisiert werden bzw. leicht abgewandelt werden. Anstatt der Leitungsschutzschalter könnten zum Beispiel auch Tür und Fensterkontakte überwacht werden. Übrigens der Raspberry läuft mit 5V und benötigt ca. 3 Watt im Betrieb.
Grüße
Wolpertinger