Alla sätt är bra utom de dåliga, eller?
Nedan finner ni ett litet knasigt exempel hur man kan logga data från en mätare utan möjlighet för extern avläsning annat än att titta på den med gluggarna man har i huvudet. Kan dock bli lite tråkigt i längden, så varför inte automatisera det hela lite.
Ingredienser
Vad jag använder mig av är 1 liten hård sak (kameratelefon), 1 stor hård sak (dator som kör FreeBSD) samt 4 mjuka saker:
- En utdömd mobiltelefon med shysst kamera (en Nexus 5X i mitt fall (men den första prototypen använde jag en Nexus 7, funkade minst lika bra, dock lite klumpig och stor). Huvudsaken är att den kör Android.
- En android app som heter IP Webcam Pro (kostar en dryg tjuga men det finns även en gratisvariant för extrema snåljåpar).
- imagemagick – för att manipulera bilden lite innan jag läser den med ssocr.
- ssocr – OCR mjukvara specifikt utvecklad för att läsa av displayer.
- En dator som kör ett vettigt operativsystem, jag kör FreeBSD och för en gångs skull fanns ssocr i repot.
Nexus 5X
Bra telefon. Kanske lite overkill, men kollegan som köper ny telefon oftare än jag köper nya kalsonger (kanske även byter) hade en över med kasst batteri.
Går nog att få tag på en bättre begagnad kameratelefon för en 50-lapp och uppåt om man letar lite.
IP Webcam Pro
Kompetent liten app som gör din android enhet till en fullfjädrad webcam. Programmet har stöd för live video. Kan med några tillägg också själv ta kort och skicka upp ex. filer till en server. Inget jag använde mig av då det även har stöd att ta kort med curl. Pluspoäng på det. I mitt fall använder jag mig av den odokumenterade(?) URL:en http://x.x.x.x:8080/photoaf.jpg som gör att blixten fungerar och jag antar också kör autofocus.
Köp appen här eller om du är snål
ImageMagick
Gammal goding som kan allt. Eller varför inte prova fork:en GraphicsMagick.
Om jag ska vara ärlig så borde egentligen ssocr klara biffen utan bildmanipulation. Men, eftersom jag började pilla med att få till en bra bild till alla andra OCR program jag provade innan, och då lämpade sig ImageMagick bra.
ImageMagick / GraphicsMagick
ssocr
Varför ssocr och inget annat OCR program? Provade ett par innan, tog alldeles för lång tid att få fart på dom. Hittade ssocr som verkade vara skrivet precis för att lösa mitt problem, funkade på en gång.
Källkod finns på GitHub
En dator
Mer cpu desto bättre. Har inte provat köra imagemagick med en massa filter på en raspberry pi, men det går säkert alldeles utmärkt om man kan leva med att det tar 15 sekunder att manipulera varje kort.
Förslag på lämplig dator
Prototyp 1
Nexus 7 hängandes i en hängsnara gjord av Cat6-kabel. Kanske inte världens mest stabila montering, men den fungerade.
Nexus 7:an saknar dock blixt på kameran; så den var värdelös i mörker.
Prototyp 2
Något stabilare upphängning gjord av en överbliven hyllkonsoll från IKEA, en Gorilla Pod knockoff från Kina och ett universal fäste med 1/4″ gäng.
Drog ett par skruv i taket bara och hängde upp skiten. Bor i ett gammalt hus med orenoverad källare, spelar mindre roll hur det ser ut =D.
Exempel på bildmanipulerings flöde
Ta ett kort
Börjar med att ta ett nytt kort. Som jag skrev tidigare, använder photoaf.jpg för att få blixten att fungera med IP Webcam Pro.
curl -s http://x.x.x.x:8080/photoaf.jpg -o original.jpg
Beskär bilden
Efter det så croppar jag bilden med ImageMagicks convert kommando.
convert original.jpg -crop 845x200+1710+1848 crop.jpg
Öka kontrasten
När det är klart ökar jag kontrasten en smula. ”Pris för stiligaste cli kommandot går 2017 till….”
convert crop.jpg +contrast +contrast +contrast +contrast +contrast +contrast +contrast +contrast +contrast +contrast level.png
Konvertera till svart/vitt
För att få tydligare siffror för ssocr, gör om till svartvitt.
convert level.png -threshold 42% threshold.gif
Skala om bilden
Av nån anledning så funkade ssocr nästan utan tweaks bäst med en bildstorlek som var ungefär lika som deras exempel. Så, skalar om bilden innan ssocr för göra sitt.
convert -resize 230 threshold.gif resize.png
Och till sist: gör om bilden till text med ssocr
ssocr -d 7 -t 10 resize.png
0077941
Voilá. Sen är det bara att logga på. Jag kör en gång var 15:e minut.
Efter att ha kört ett nästan ett dygn, så verkar jag göra av med strax under 1kWh per timme när jag kör pelletsbrännaren. Inte en blekaste om det är mkt eller lite; men det ska bli intressant att se hur väder/vind/utetemperatur och knasiga manicker som tar kort på elmätaren 4 gånger i timmen, påverkar elförbrukningen framöver.
Flashing in the dark