Open Source im professionellen Einsatz
Linux-Magazin 11/2016
© Le Moal Olivier, 123RF

© Le Moal Olivier, 123RF

Heimische Geräte zur Datenerfassung bewegen

Mess-Diener

Nicht nur hippe Gadgets, auch ältere Geräte im Haushalt wie Personenwaagen oder Laserdrucker erfassen wertvolle Daten. Manuell extrahiert und grafisch ansprechend über die Zeit aufbereitet bieten sie interessante Einblicke in Gewohnheiten und Befindlichkeiten des Perlmeisters.

569

Big Data erfasst unsere Bewegungen mittels Mobiltelefon, so genannte Wearables messen Körperparameter wie Puls und Blutdruck, Sensoren rund ums Eigenheim melden, wer kommt und geht. Wer gerne mit solchen Daten spielt, dürfte diese Möglichkeiten bei dienstälteren Geräten wie etwa einer Personenwaage vermissen, die zwar klaglos ihren Dienst tut, aber keinen Webserver mit API bietet. Mit einem einfachen Low-Tech-Ansatz und halbautomatischer Methode holt der findige Datenfreund auch aus diesen Oldtimern genug Informationen, um ansprechende Grafiken zu zeichnen, historische Nutzerdaten zu erfassen und daraus zukünftige Trends abzuleiten.

Mein Multifunktionsdrucker MFC-7450 von Brother bietet zwar keine digitale Schnittstelle zu seiner Reportfunktion, mich interessiert aber trotzdem, wie viele Seiten Papier so pro Monat durchrattern. Daraus kann ich ableiten, wann ich neue Laserkartuschen nachbestellen oder ob ich in meinem Haushalt eventuell lautstark verschwenderischen Umgang mit wertvollen Ressourcen anprangern muss.

Halbautomatik erinnert

Die Anzahl der gedruckten Papierseiten kann ich zwar nicht automatisch auslesen, aber wenn ich mich einmal im Monat durch das Menü auf dem Display hangel, um den lebenslangen Papierzähler des Druckers abzulesen (Abbildung 1) und den aktuellen Stand aufzuschreiben, lassen sich daraus atemberaubende Verbrauchskurven malen. Die Krux ist freilich, regelmäßig daran zu denken, den Zähler abzulesen, aber dazu gibt es zum Glück automatische Erinnerer.

Abbildung 1: Laut Display hat der Drucker im Laufe seines Lebens 31651 Papierseiten bedruckt.

Hierzu nutze ich den in [2] vorgestellten Tickler-Mechanismus und den digitalen Turbo-Notizblock Evernote, der mir einmal im Monat den Eintrag mit den bislang notierten Zählerständen schickt. Ich füge den neuesten Stand hinzu und schicke das Ganze wieder schlafen (Abbildung 2). Ein entsprechender wandernder Kalendereintrag und eine Dropbox-Datei oder ein Google-Spreadsheet tun es natürlich auch – Hauptsache, der Operateur erfasst die Daten regelmäßig und speichert sie permanent in der Cloud.

Abbildung 2: Aus dem Evernote-Tickler heraus geht an den Perlmeister die Aufforderung, einmal im Monat den Papierstand im Drucker abzulesen und abzuspeichern.

Exportieren und ausfieseln

Evernotes »Export« -Funktion extrahiert Notizen (Abbildung 3) im Enex-Format (einem XML-Dialekt) und das Perl-Skript in Listing 1 fieselt die Einträge heraus, die im Format Datum/Zählerstand in »<LI>« -Elementen stehen. Der Aufruf »en-extract note.enex« erzeugt Daten im CSV-Format, die Skriptsprachen später leicht maschinell weiterverarbeiten können. Hierzu sucht das CPAN-Modul HTML::TreeBuilder::Xpath mit dem Xpath-Ausdruck »//li« nach »<LI>« -Elementen in den XML-Daten, um die in Listen abgelegten Datumsangaben und Papierzählerstände auszufiltern.

Listing 1

en-extract

01 #!/usr/bin/perl -w
02 use strict;
03 use HTML::TreeBuilder::XPath;
04 use Encode qw( _utf8_on );
05
06 my $data = join "", <>;
07 _utf8_on( $data );
08 my $tree= HTML::TreeBuilder::XPath->new;
09 $tree->parse( $data );
10
11 my( @content ) = $tree->findvalues("//li");
12
13 for my $line ( @content ) {
14   $line =~ s/[#\x{c2}\x{a0}\s]+/ /g;
15   next if $line !~ /^\d/;
16   my( $date, $val ) = split " ", $line;
17   next if !defined $val;
18   print "$date,$val\n";
19 }

Dieser Ansatz spart viel Zeit beim Programmieren, denn der Xpath-Parser sucht einfach nach Listenelementen in beliebiger Verschachtelungstiefe. Das Skript braucht sich also nicht darum zu kümmern, welche XML-Elemente zum Ziel führen, da nur der tief verschachtelte Inhalt interessiert. Evernote fügt gerne irgendwelche närrischen Sonderzeichen in die Notizen ein, die Zeile 14 wieder verwirft. Auch etwaige Kommentare fliegen raus, da Zeile 15 darauf besteht, dass jede Datenzeile mit einer Ziffer beginnt.

Abbildung 3: Die Export-Funktion speichert die Evernote-Notiz als .enex-Datei« im XML-Format ab.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Perl-Snapshot

    Um vorläufig eingefrorene Projekte regelmäßig zu reanimieren, sortieren Anhänger der "Getting Things Done"-Methode Zettel in Hängeregistern nach Datum und sehen diese Tickler-Files regelmäßig durch. Perl und Evernote hingegen wecken den User automatisch mit Erinnerungsmeldungen in der Inbox.

  • Perl-Snapshot

    Um Onlinedokumente auf Google Drive mit Tags zu versehen, legt ein Skript mit Hilfe zweier APIs Metadaten auf Evernote ab. Damit kann der Benutzer beispielsweise seine in der Cloud gelagerten E-Books nach Kategorien durchsuchen.

  • Perl-Snapshot

    Ein kräftiger Windstoß genügt, um das System der Notizzettel vom Schreibtisch zu fegen. Evernote, eine Art hochstrukturierter digitaler Notizblock, zeigt dem User seine Aufzeichnungen unabhängig von Ort und Endgerät. Ein API erlaubt programmatischen Zugriff mit Facebooks Thrift-Library.

  • Klimaforschung

    Hält sich die Hitze noch im Rahmen? Beim Überwachen der Zimmertemperatur mit einem preiswerten USB-Sensor bietet das Holt-Winters-Verfahren aus dem RRDTool-Werkzeugkasten einen Ansatz, um gewöhnliche Schwankungen von Ausreißern zu unterscheiden.

  • Perl-Snapshot

    Damit Hobby-Youtuber Michael Schilli erfährt, wenn seine Guckerzahlen durch die Decke gehen, analysiert ein Perl-Skript täglich Trends und schlägt Alarm, falls ein Video plötzlich zum Hit wird.

comments powered by Disqus

Ausgabe 06/2017

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.