Montag, 17. Dezember 2012

Gaszähler mit Android

Da ich jetzt ja Entwickler bin, habe ich meine erste ((mehr oder weniger) nützliche) App geschrieben und auf mein altes HTC Wildfire installiert. Es macht jetzt in festen Intervallen Fotos vom Gaszähler, lädt sie per Dropbox API, die ein sehr schönes Tutorial bietet, auf meinen Computer (FTP wäre ja zu langweilig -- und in Zeiten der Cloud muss einfach alles übers Internet gehen ;) ), wo ich sie nach etwas preprocessing (ausschneiden, normalisieren, monchromatisieren, weichzeichnen) mit Imagemagick per Tesseract OCR auslese. Das ist zwar nicht perfekt zuverlässig, aber besser als es per Hand zu machen.
Die Lampe ist übrigens da, damit das Handy fokussieren kann. Im Gegensatz zu neueren Gräten ist es zu dumm den Blitz zu benutzen beim fokussieren. Aber keine Angst: Es ist eine sparsame LED ;)

Dabei habe ich gelernt, dass Java irgendwie seltsam ist, aber man von Eclipse so gut unterstützt wird, dass man eine lauffähige App schreiben kann, obwohl man Java vorher nur vom hörensagen kannte.
Und was ich nochmal hervorheben möchte: Es gibt nahezu perfekten Linux Support für das Android SDK. Wäre ja auch seltsam, wenn nicht. Ich musste nur eine "udev rule" hinzufügen, mein Nexus 4 anstöpseln und in Eclipse auf "Run" klicken. Und schon wurde ein Foto nach dem anderen in meine Dropbox geladen :D

Als nächstes werde ich zu Auswertung übergehen. Mal sehen, wie gut man sehen kann, wann ich die Heizung aufdrehe.

Update: Auswertung ist da.

Update 2:
Mit folgendem Codeschnipsel hat das auslesen am besten geklappt. Wobei man beim -crop natürlich nur die Zahlen ausschneidet und die -blur Parameter stark von der Auflösung abhängen.
convert -crop 488x60+186+414 -normalize -enhance -monochrome -blur 10x1.5 $i out.png
tesseract out.png cur -psm7 nobatch digits 1&>2 /dev/null
Leider führt bei mir ein Schatten dazu, dass die erste Stelle nach dem Komma oft fehlerkannt wird, sodass ich mich einem vielversprechenderem Ansatz gewidmet habe: Den roten Strich auf dem drehenden Rad zu erkennen.

2 Kommentare:

  1. Hi, ich versuche gerade so etwas auch für meinen Stromzähler. Aber Tesseract oder Cuneiform tun sich mit dem Auslesen schwer. Könntest du vielleicht den Code hinzufügen, damit ich mir mal anschauen kann, wie du das machst?

    AntwortenLöschen
    Antworten
    1. Ich habe ein paar Zeilen Code angehängt.
      Aber wirklich gut geht es auch nicht.

      Löschen