WindWiz

En GSM-uppkopplad vindmätare

Juniuppdatering

Jag måste erkänna att det fina vädret har satt käppar i hjulet för vindmätarbygget. Det är hög tid att posta lite livstecken!

  • En demo-version av vindsajten i mobilformat (se nedan inlägg om jQuery Mobile) finns numera på webben för allmän beskådan. Den är särskilt trevlig att besöka med en smartphone då man får flashiga slide-övergångar mellan sidor och andra ögongodis. Peka din webbläsare eller telefon till http://vind.minimum.se/demo/. Man kan även logga in med användare ”demo” och lösen ”demo”. Tanken är att förutom att göra vinddata lättillgängligt även göra väderprognoser och inlägg från andra flygare möjligt. Den är absolut i experimentfasen än så länge, men fungerar bra som ett proof-of-concept för jQuery Mobile-plattformen.
  • Häromveckan rullade SMHI äntligen ut en mobilapp för sina väderprognoser. Kanske inte jättespännande för detta projektet tänker ni kanske? Fel! En mobilapp betyder nämligen att SMHI numera också exponerar sin data via JSON. För den som är intresserad av att integrera SMHIs väderprognoser i andra applikationer, t.ex. en mobil vindsajt, är detta glada nyheter. Med en väldefinierad JSON-datakälla slipper man tolka SMHIs vanliga HTML-sidor för att utvinna väderdata, något som är bökigt, tråkigt och jobbigt att underhålla. SMHI har inte officiellt gått ut med sin JSON-data, men det var inte direkt rocket-science att ”knäcka” deras system.
  • GSM-kommunikationen är på plats i vindmätarbygget. Detta har varit i särklass den mest dryga komponenten att implementera hittills. Vägen hit har varit kantrad med alla tänkbara problem, allt från stacköverskrivningar, fel i klockfrekvenser, avsaknad av vissa utdragna pinnar, oförmåga att hantera strömspikar vid GSM-registrering på GSM-nät osv. Helt ärligt tror jag inte allt fungerar helt 100% ännu, men jag är ganska nöjd med att ha ett fungerande kommandoradsinterface där jag kan åtminstone kan exekvera AT-kommandon och läsa tillbaks dess svar.
  • Det har tillkommit en ny debugfunktion för att mäta stackutnyttjande. När man bara har 2 KB RAM-minne är det lätt att man råkar tänja på gränserna utan att det märks innan det är försent 😉 Denna funktion gör det möjligt att mäta maximal stackstorlek som observerats sedan uppstart av vindmätare. Se GitHub för detaljer.

Här följer lite detaljer kring SMHIs JSON-API, mest som en minnesnotering för framtida bruk:

  • GPS-koordinater i WGS84-format används för att välja plats för väderprognos. SMHI använder geonames.net webbtjänst för att översätta namn på städer och andra platser till GPS-koordinater.
  • JSON-data hämtas från http://ppdyn.smhi.se/produktportal-1.0/ws/products/weatherdata/LAT/LON/forecast där LAT, LON är GPS-koordinatens latitud resp. longitud-komponent. T.ex har Ystad GPS-koordinat 55.42919, 13.81710 och därför blir adressen http://ppdyn.smhi.se/produktportal-1.0/ws/products/weatherdata/55.42919/13.81710/forecast.
  • SMHI har försökt att skydda sig från ”stöld” av data genom att neka tillgång såvida inte en särskild nyckel bifogad i HTTP-anropet. Denna nyckel adderas som en extra HTTP-header kallad ”Key”. Jag är osäker på om denna nyckel någonsin ändras, men a67b9d6b5efa0d10617827d726b424d0 fungerar bra för mig.
  • Exempel på hur datan kan hämtas med wget på en Linuxburk: wget –header ”Key: a67b9d6b5efa0d10617827d726b424d0” http://ppdyn.smhi.se/produktportal-1.0/ws/products/weatherdata/55.42919/13.81710/forecast
  • Jag är osäker på om nyckeln är knuten till en unik användare, och skulle isf kunna användas av SMHI för att förhindra alltför täta hämtningar av data. Eller så använder alla samma nyckel och dess enda funktion är att göra det svårare att plocka datan direkt från en vanlig webbläsare, eller för att kunna ändras i framtiden. Nyckeln ovan fungerade i ett par dagar, sen fick jag ”Access denied” igen. Detta tyder på att varje nyckel är variabel och tidsbunden. Troligtvis en hash som innefattar datum (med ett par dagars precision), IMEI (eller annat ID) och ev. mer.
  • Formatet på JSON-filen är ganska enkel, den innehåller vindriktning, medelhastighet och vindbyar samt lufttryck, lufttemp. och en del annan mätdata.
Annonser

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: