Uppdatering: Jag har slutat använda den här lösningen sedan det visade sig att i stort sett alla givade var ytterst opålitliga.
För några år sedan köpte jag en väderstation, WH1080, från Clas Ohlson. Den kommunicerar trådlöst mellan själva väderstationen och en touch-skärm. Det visade sig att det fanns en USB-anslutning så att skärmen går att koppla ihop med en dator och som sedan kan kommunicera med den.
Det finns en programvara wsp.c från websidan http://code.google.com/p/weatherpoller/ som kompileras enligt nedan:
gcc -o wsp wsp.o -lusb -l m
Att läsa från USB-bussen kräver root-access, men jag var så ivrig att få igång allting att jag gjorde programmet suid root. Jaja… Jag vet, jag vet…
Såhär ser utdatat ut från kommandot ./wsp:
Show summary: Use --help for more options. Indoor: Temperature: 14.8 C Humidity: 52% Outdoor: Temperature: 16.8 C Wind chill: 16.8 C Dewpoint: 8.2 C Humidity: 57% Absolute pressure: 1008.8 hPa Relative pressure: 1008.8 hPa Average windspeed: 1.0 m/s Gust wind speed: 1.7 m/s Wind direction: 135 SE Total rain: 301.2 mm
Det enda som krävdes ytterligare var att knåpa ihop ett par Python-script som gör följande från cron:
- läs data och skriv parallellt till en textfil och en RRD databas
- kapa grafer med rrdtools kopiera graferna till en webserver
När jag ominstallerade min garagedator utan att ha brytt mig om vare sig den eller väderstationen på ganska länge så fick jag inte igång kommunikationen igen. Jag provade ett gäng olika programvaror och här är exempel på de felmeddelanden jag fick:
“Incorrect magic number!” (wsp) “usb.USBError: Connection timeout” (pywws) “Can’t communicate with device” (EasyWeather in Windows).
Programmet wwsr rapporterade en temperatur på ca 670 celsius, vilket är lite åt det varma hållet även om det var i juni vid västkusten.
Felet visade sig bero på dåligt data i enhetens minns. Det går inte att tömma minnet från kontrollenheten (touch-skärmen), men det visade sig att all lagrad data försvinner när batterierna tas ut. Det kan vara bra att veta!
Jag vet inte hur man bär sig åt för att plocka bort gamla dataposter, men det får bli en övning inför nästa gång. Får inte läsa av USB-porten
Om man försöker köra programmet utan någon form av fix får man följande felmeddelande:
Could not open usb device, errorcode - -1
Det fixar man antingen genom suid root (enkelt, dåligt) eller på något fiffigt sätt. Såhär gör man det suid root:
chown root wsp && chmod 4750 wsp
(ovanstående bygger på att du är med i programmets grupp)