Linux

Stalk-Pi

Foto: Nistkasten mit Raspberry Pi, Kamera und IR-Beleuchtung
Schon seit dem Kauf meines ersten Raspberry Pi liebäugelte ich damit, mal einen Nistkasten mit einer Kamera zu versehen und dann zu schauen, was da drin passiert.
Lange hat es gedauert, aber nun nimmt das Projekt Gestalt an.
 
Angeregt wurde ich nach längerer Zeit durch das Buch “Raspberry Pi – das umfassende Handbuch”. Dort haben die Autoren das gleiche Thema angepackt. Bei mir hing es die ganze Zeit ja eigentlich nur daran, dass ich … hm … ja … zu faul war, einen passenden Nistkasten zu bauen. Aber das haben die Autoren des Buches auch nicht gemacht, sondern auf ein fertiges Produkt zurückgegriffen.
 
Na das kann ich auch… ;-)! Also wurden fix ein paar Onlineshops durchstöbert, bis ich das passende Modell relativ preiswert fand. Es dauerte gar nicht lange, da lag das Teil im Paketkasten und die Bastelei begann. Zunächst kam der 3D-Drucker zum Einsatz, weil der Pi ja ein Gehäuse braucht. Danach folgte der Druck eines Gehäuses für die Kamera. Nachdem das erledigt war, ging ich das Problem des fehlenden Lichtes im Nistkasten an.
 
Damit die Piepmätze sich nicht gestört fühlen, kommt natürlich nur eine InfraRot-Beleuchtung infrage. Weil ich nicht wirklich weiß, ob die Piepmätze sich von der IR-“Beleuchtung” vielleicht doch gestört fühlen, ist sie nicht permanent an, sondern über Transistoren per Raspberry-GPIOs schaltbar. Um die LEDs optimal positionieren zu können, konstruierte ich mit FreeCAD fix zwei kleine “Kronleuchter” und druckte sie anschließend aus.
 
Als sparsamer Bastler testete ich zunächst, wie sich die IR-LEDs einer vom letzten Röhrenfernseher versehentlich übriggebliebenen Fernbedienung als “Lichtquelle” machen. Den Versuch war es wert, aber das Ergebnis war leider enttäuschend. Also wurden in der Bucht mal fix ein paar andere LEDs ersteigert und die machen jetzt wirklich “Licht”, obwohl ich sie nicht mal mit der maximal möglichen Leistung betreibe.
 
Bis dahin ist erstmal alles soweit klar. Leider gibt es da noch ein kleines Problem mit der Kamera. Der Hersteller hat “die Linse” selbiger nämlich dummerweise verklebt und den Fokus somit fest eingestellt. Richtig scharf sind die Bilder auf die kurze Distanz im Nistkasten deshalb leider noch nicht und das Problem lässt sich nur mit roher Gewalt lösen. Geht dabei etwas schief, sind so um die 30 Euro für eine neue Kamera fällig…
 
Diesen Akt werde ich dann in den nächsten Tagen angehen. Außerdem, weil der Pi ja sonst hoffnungslos unterfordert wäre, kommt noch ein Temperatursensor in den Kasten.
Kamerabild und / oder Video werden dann im nächsten Schritt hier im Blog eingebunden. Dazu später mehr.

Operation gelungen :)

Nachdem die Festplatte meines alten Panasonic Toughbook die Hufe hochgerissen hatte, habe ich umgehend Ersatz bestellt. Dieser traf auch zügig ein und wurde inzwischen “transplantiert”.
Ich war erstaunt, dass das relativ einfach und zügig ging. Hatte es mir wirklich komplizierter vorgestellt.
Schrauben vom Gehäuseboden entfernt, kurz geschaut und über das Innenleben gestaunt – die Festplatte hat eine eigene Heizung… – alte Platte raus, neue Platte rein, zugeschraubt, fertig.
Anschließend kam natürlich wieder der Ubuntu-Server auf die Platte. Inzwischen läuft fast alles wieder prima, nur ein paar Shell-/ Perlskripte, von denen ich (natürlich ;-)) kein Backup hatte, muß ich nochmal “neu erfinden” ;-).
Bei der momentanen Wetterlage ist das natürlich ein hübscher Zeitvertreib ;-). Cachen im Tiefschnee muss ja wirklich nicht sein…

Crashbumm!

Gestern musste ich mit Erstaunen feststellen, dass im Blog keine Wetterdaten mehr angezeigt wurden. Eine genauere Untersuchung zeigte, dass sich der auf einem alten Panasonic Toughbook basierende Server verabschiedet hatte.
Eine schnell vorgenommene Neuinstallation lief nur wenige Stunden – die Festplatte hatte ihre Reise ins Elektronik-Nirvana angetreten :-(.
Zum Glück lief die Wetterdatenerfassung parallel auf der NSLU weiter. Aber die Datenbank dort ist für eine intensive Nutzung einfach zu langsam. Deshalb gibt es vorläufig wieder nur die “Schmalspurvariante” der Datenanzeige im Blog.
Eine neue Festplatte ist geordert. Mal sehen, ob ich den Rechner so wieder zum Leben erwecken kann. Wär schade drum…

Das Wetter. Wieder mal.

In den letzten Tagen habe ich mich mal wieder mit meiner Wetterstation beschäftigt. Die Datenbank ist jetzt auf einen anderen Rechner mit etwas mehr Rechenpower umgezogen. Die NSLU tut zwar nach wie vor ihren Dienst, aber für größere Abfragen brauchte sie mit zunehmender Größe der Datenbank mehr Zeit. Das führte dazu, dass der Server das abfragende PHP-Script aus Zeitgründen abschoss.
Dieses Problem ist nun erstmal Geschichte.

Dafür gab es seit gestern Empfangsprobleme. Ich vermute, dass die Batterien des Sensors nach 1½ Jahren ins Schwächeln gekommen sind. Die Temperaturdiagramme und Regenmengendaten sind dadurch leider etwas durcheinander geraten, aber das wird sich in den nächsten Tagen richten ;-).

Weil der Server nun etwas kräftiger auf der Brust ist, kann ich mich auch mal daran machen, die Auswertung noch etwas umfangreicher zu gestalten.
Einzig der Regenmelder macht mir Sorgen. Der ist etwa so zuverlässig eine Wünschelrute. Eine totale Fehlkonstruktion. Da kann es den ganzen Tag regnen, das Ding meldet “trocken” :-(. Hier müsste ich mal nachbessern mit einer Eigenkonstruktion…

Neues muss nicht immer besser sein

Seit vielen Jahren, genauer gesagt seit SuSE 6.3 bin ich Linux-Benutzer und verfolge die Entwicklung in diesem Bereich immer sehr interessiert.
Vor einigen Jahren wechselte ich von SuSE zu Ubuntu, weil ich mit den Updates bei SuSE immer irgendwelche Schwierigkeiten hatte. Immer gab es danach Probleme mit nicht (mehr) erfüllten Paketabhängigkeiten und Programme liefen nicht mehr oder ließen sich nicht installieren.
Nach dem Wechsel zu Ubuntu gab es das nicht mehr und die Welt war in Ordnung ;-).

Vor einigen Tagen hievte ich nun mein Netbook von Ubuntu 10.10 auf 11.04. Seit dieser Version wird in Ubuntu nicht mehr Gnome als Benutzeroberfläche verwendet, sondern das neue Unity. Das testete ich nun ganz unvoreingenommen einige Tage lang.

Desktop unter Ubuntu 11.04

Unity unter Ubuntu 11.04

Allerdings bin ich gestern ziemlich entnervt wieder zum alten Desktop zurückgekehrt. Hintergrund war folgender: Für SSH-Verbindungen zu meinem Homeserver, zum Webserver und anderen Rechnern gab es beim alten Desktop ganz praktische Lesezeichen in der Menüleiste unter “Orte”. Einfach einzurichten, zu merken und zu finden.
Nun richtete ich mir testweise einen neuen Server ein und um die Verbindungsdaten nicht immer wieder neu eingeben zu müssen, suchte ich das entsprechende Menü unter Unity. Leider wurde ich in angemessener Zeit nicht fündig.
Der nächste Haken zeigte sich bei der Suche nach den Programmstartern. Unity bietet am linken Bildschirmrand zwar eine hübsch anzusehende, scrollbare Leiste, auf der die (nach Ubuntus Meinung) wichtigsten Programmstarter liegen, meine Favoriten (z.B. GIMP) sind aber nicht dabei. Also wieder suchen.
Weiter unten in dieser hübschen Leiste fand ich dann einen Eintrag, der sich “Anwendungen” nennt. Sehr schön, aber GIMP fand ich dort auch nicht.

Anwendungen unter Unity


Klickt man auf “Anwendungen” wird ein bildschirmfüllendes Menü angezeigt, auf dem nicht viel von dem zu sehen ist, was man erwartet.
Große Icons verschwenden Platz, den man ja gerade auf einem Netbook nicht sehr üppig zur Verfügung hat. Die Programme werden nach dem Alphabet geordnet angezeigt und derer werden maximal fünf gezeigt. Ein Klick auf “Weitere 132 Ergebnisse anzeigen” bringt dann eine hübsche Latte Icons auf den Schirm, immer fünf in einer Reihe. Die Suche nach einem Programm artet da in eine Scrollorgie aus…
Auf einem Tablet-PC mit Touchscreen-Bedienung mag das praktisch sein, auf einem normalen Desktop-PC mit Mausschubserei ist das eher unzumutbar.
Da lob ich mir meinen alten Desktop, mit praktisch in Gruppen sortierten Menüeinträgen, die ich mit wenigen Mausbewegungen durchsucht habe.

Zum Glück läßt sich der schicke Narwal auch im klassischen Look betreiben. Und wer wie ich eher Fan des klassischen Ubunu ist, findet die Einstellungen zum Wechseln unter Systemeinstellungen (das Menü verbirgt sich unter dem “Ausschaltbutton” oben rechts) -> System -> Anmeldebildschirm. Dort “Ubuntu Classic” als Standardsitzung auswählen. Nach dem nächsten Start sieht dann alles wieder wie gewohnt aus. Zumindest solange es die Ubuntu-Macher zulassen. Spätestens dann, wenn sich der “Classic-Modus” nach dem nächsten Update nicht mehr aktivieren lässt, wird es Zeit, sich eine andere Distribution zu suchen…

Zum Glück noch (wieder) da: der alte Gnome-Desktop

Noch eine Anmerkung: Das ist meine, sehr subjektive Meinung. Es mag Möglichkeiten geben, vieles anzupassen oder einzustellen. Dies sollte sich dann aber leicht und intuitiv finden und bewerkstelligen lassen und auch für “Otto Normaluser” machbar sein. Ist es nach meinem Empfinden momentan aber eher nicht.

Kleine Ursache – große Wirkung

Bei der Übertragung der Daten per Funk von den Temperatur-/Luftfeuchtigkeitssensoren zum Wetterdatenempfänger kommt es naturgemäß immer mal wieder zu Übertragungsfehlern und es werden fehlerhafte Werte in die Datenbank eingetragen. Das ist natürlich ärgerlich, weil die zum Teil extrem falschen Werte in der Auswertegrafik sehr auffällig sind.
Leider fehlte mir bisher die Zeit, ein Script zu basteln, dass die falschen Daten schon vor dem Eintrag in die Datenbank rausfiltert.  Deshalb habe ich gestern mal alle fehlerhaften Daten manuell per MySQL auf der Konsole gelöscht. Insgesamt waren das knapp 800 Datensätze. Als ich dann heute in aller Frühe einen Blick auf die Wettergrafik warf, haute es mich fast um, denn die Grafik war inzwischen eher zu einem kleinen Kunstwerk geworden…

Bei der Suche nach den Ursachen dieses “Kunstwerks” stieß ich darauf, dass in der Textdatei, in der mein Auswertescript die Daten ablegt, die Reihenfolge der Daten anders war, als sonst. Da war zwischen Daten vom 02.03.11 plötzlich ein Datensatz vom 18.03.11…
Nun war mir klar, dass der Fehler bei der Abfrage der Daten aus der Datenbank passieren musste. Und drei kleine Worte brachten dann die Lösung des Problems. Einfach ein “order by timestamp” an die Datenbankabfrage angehängt und schon war wieder alles im Lot. Warum nicht gleich so :-))?!

Und wenn ich demnächst irgendwann mal viel Zeit habe, werde ich mich wohl doch noch an die Arbeit machen und eine Fehlerkorrektur vor dem Abspeichern der Daten in der Datenbank einbauen…

Wetternews

Bei der momentanen Kälte sitze ich lieber in der warmen Stube und bastle an meinen Wetterscripten weiter.
Inzwischen ist ein erstes Wetterdiagramm online (siehe Seite ‘Wetter’). Dort wird ein stündlich aktualisiertes Diagramm des Verlaufs von Temperatur und relativer Luftfeuchtigkeit angezeigt.
Dazu wird per Cronjob ein kleines Shellscript gestartet, welches wieder um verschiedene Scripte und Programme aufruft, die dann im Endeffekt das kleine Diagramm erstellen.
Beteiligt sind daran Perl, MySQL, Gnuplot und Imagemagick. Das Perlscript fragt die betreffenden Daten aus der MySQL-Datenbank ab, schreibt sie in eine Textdatei und erzeugt eine Steuerdatei für Gnuplot. Gnuplot lädt die Steuerdatei und erzeugt aus den Daten in der Textdatei eine transparente .png-Bilddatei. Imagemagick kopiert das transparente Diagramm anschließend auf den Wolkenhintergrund und gibt die fertige Grafik aus. Zum Schluß verschiebt das Shellscript die Grafik in den Webspace.

Nebenbei habe ich auch noch einen kleinen Fehler bei der Auswertung der Maximal- / Minimaltemperaturen “entschärft”. Leider kommt es immer mal vor, dass der Wetterdatenempfänger Daten einzelner Sensoren nicht erfasst. Dann stehen für die betreffenden Sensoren falsche Werte (in diesem Fall eine Null) in der Datenbank. Nun kann man z.B. für die Temperatur keine Unterscheidung treffen, ob die Temperatur wirklich 0°C beträgt oder der Wetterdatenempfänger keine Werte erfasst hat. Im Zusammenhang mit der gleichzeitig gesendeten relativen Luftfeuchtigkeit ist es dann aber doch möglich. Denn falls der Wert für die Luftfeuchtigkeit auch Null ist, was in unseren Breiten wohl nie vorkommt, kann man die Daten für den betreffenden Sensor verwerfen.
Nun kann es nicht mehr passieren, dass bei der Minimaltemperatur Mitte Juli 0°C angezeigt werden ;-).

Nachtrag:
Kleine Änderung beim Dateiformat des Diagramms. Die erzeugte .png-Grafik war mit einer Dateigröße von etwa 2MB eindeutig zu groß. Deshalb gibt’s die jetzt im .jpg-Format. Das schont unterwegs die auf 1GB limitierte Datenflatrate fürs Handy ;-).

Fortschritte…

Temperatur / rel. Luftfeuchtigkeit am 15.02.11

Temperatur / rel. Luftfeuchtigkeit am 15.02.11 - so siehts aus

Mühsam ernährt sich das Eichhörnchen, aber es geht voran. Mittlerweile ist das Script soweit fertig, dass ich schon ziemlich zufrieden bin und ich es eigentlich täglich per Cron-Job starten könnte. Ich werd es aber lieber noch ein paar Tage testen, bevor ich es scharf schalte.
Außerdem brauche ich ja noch eine Webseite, auf der die Ergebnisse dann schön präsentiert werden. Und solange das Wetter noch nicht so ist, dass ich mich im Garten in die Sonne legen kann, hab ich wenigstens was zum Basteln ;-).

Ganz Schlaue werden sicher bemerken, dass die Achse für die relative Luftfeuchtigkeit bis 110% beschriftet ist und monieren, dass die Luftfeuchtigkeit maximal 100 Prozent betragen kann. Das weiß ich auch :-). Aber falls es mal regnet und die Feuchtigkeit wirklich bis auf 100% ansteigt, könnte man sonst die Legende im Diagramm nicht mehr lesen…

Wetter-Statistik

Temperaturverlauf vom 14.2.11

So sieht das Ergebnis aus

Heute packte mich mal wieder die Programmierwut und ich habe begonnen, ein kleines Perlscript zu schreiben, das mir den Temperaturverlauf eines Tages (…Woche,Monat,Jahr…) grafisch darstellt.
Dazu frage ich zunächst die Wetterdaten für den entsprechenden Zeitraum in der Datenbank ab und schreibe sie in ein Textfile. Gleichzeitig wird eine Steuerdatei für Gnuplot erzeugt, welches anschließend das erzeugte Textfile mit den Wetterdaten einliest und daraus die Grafik im png-Format berechnet.
Es ist schon erstaunlich, wozu man so eine NSLU bewegen kann, wenn man’s kann ;-).
Als nächstes werde ich das Script so erweitern, dass auch die Temperaturen der anderen Sensoren, bzw. die relative Luftfeuchtigkeit angezeigt wird. Man müsste nur viel mehr Zeit haben… 😉

Es wettert wieder :-)

Manch einer hat sich sicher schon gewundert, dass es hier in letzter Zeit gar kein aktuelles Wetter mehr gab. Mir ist es auch ziemlich peinlich zugeben zu müssen, dass es nach der Ankündigung hier im Blog auf einmal nicht mehr funktionierte.
Inzwischen hatte ich etwas Muße, habe mal nach dem Fehler gesucht und das Script “entlaust”. Wobei im Script nicht mal ein Bug war, eher im Gegenteil. Das Problem lag einfach daran, dass die serielle Schnittstelle nach einem Reboot die Einstellungen “vergessen” hatte und mein Script so ewig auf die Wetterdaten gewartet hätte…

Jetzt habe ich das Script etwas erweitert und die Schnittstelle wird bei jedem Aufruf neu initialisiert. Sicher ist sicher :D.
Allerdings passen durch die lange “Auszeit” des Scriptes die Niederschlagsmengen nicht mehr so richtig, an dieser Stelle muß ich mir noch etwas einfallen lassen.
Hauptsache es läuft erstmal wieder :-).

Ach so, noch was. Der eine Außensensor liegt zu Testzwecken in meiner Bastelbutze auf dem Schreibtisch. Mir wäre die angezeigte Temperatur als Außentemperatur allerdings lieber…