Väderstation (tunnelbana) med Netduino (5 / 5 steg)
Steg 5: Hur fungerar detta?
Stegen i drift:
- Netduino-Plus första hyresavtal och IP-adress från DHCP-servern
- Netduino-Plus går till internet service http://www.geobytes.com/ att ta reda på var i världen den finns. Utdata från den här tjänsten innehåller stad, land osv men vad vi ta från det är longitud och latitud.
- Netduino-Plus går till internet service http://www.askgeo.com/ att ta reda på vad som är den nuvarande offseten för din plats från UTC. På så sätt vet vi inte bara din tidszon utan även sommartid.
- Netduino-Plus går till NTP-tjänst på internet för att få korrekt atomtid och uppsättningar Netduino-Plus intern klocka för den här gången tillsammans med offset vi funnit tidigare.
- Netduino-Plus går till Weather Underground service http://www.wunderground.com/ att hämta information om nuvarande och prognostiserade vädret.
- Netduino-Plus sänder väderdata och klocka till 4D enheten över seriell (UART) gränssnitt med enkla protokoll som jag kommer att hoppa över beskrivningen av här. Det är i koden.
- Tid från NTP synkroniseras varje 300 minuter (6 timmar) som jag fann vara tillräckligt exakt.
- Väderinformation hämtas varje 10 minuter. Mer än tillräckligt för de flesta människor och fall. Mer frekventa uppdateringar från Weather Underground kräver att du vara betalande användare.
- Tid från NetduinoPlus skickas till 4D enhet var 3 minuter (Netduino timers hittade lite mer exakt än den 4D dem)
- 4D enheten formateras data från text stream fick det från Netduino-Plus till grafik på skärmen.
Några anteckningar:
Mitt tidigare projekt när genom att använda Arduinoen redan var utmanande ur minnet till Arduino styrelsen, och jag var säker på den ytterligare informationen från Weather Underground inte skulle passa, att inte tala om automation knepen för att hitta plats och DST. Det föreföll mig Netduino en bättre redo för jobbet som den har vissa mer resurser som minne och snabbare processor (48MHz vs 16MHz på Arduino). Även hanterad kod var mycket tilltalande för sådan internet förfrågningar... men fick senare reda på att när du laddar den XML-generiska parser församlingen till värd, du kör slut på minne. Värre än så, var det inte tillräckligt för att lägga till funktioner som jag ville ha för automatisering av sommartid och läge. Besviken jag beslutat att hålla sig till vad som är viktigt, automation och enkelhet, och spendera några tråkiga tangenttryckningar själv på parsing XML själv. Nåja, ingenting är någonsin lika ljus som ursprungligen ses av optimistsï. Statligt av frågor nu är att Netduino-Plus är att ha ett eget minne utmaningar och detta program är här passar väl in och fungerar, men det finns mycket lite utrymme att lägga till något mer. Så, jämfört med tidigare projekt är detta en inte mäter inomhus temperatur och luftfuktighet. Dessutom är lågt prissatta DHT22 sensorer som jag har väl stöds inte på Netduino. Det finns rykten om det fungerar med. NETMF 4.2 som är i beta, men när jag laddat upp den. NETMF 4.2 på Netduino, det fanns inte tillräckligt med utrymme för programmet även innan du lägger till koden sensor. Så återigen, jag plockade automation och enkelhet över rikare funktionalitet.
XML-tolkning görs genom att läsa en byte i taget från internet-uttaget. Som detta är hanterad kod, det fungerar fruktansvärt långsamt. Det tar min Netduino-Plus bra 19 sekunder att parsa XML-ström från Weather Underground. Jag tror jag vet hur att optimera den för mycket bättre prestanda, som att använda Stream klass och allt, men gissa vad? Det slut på minne när du gör som. Sanningen är att jag inte bryr sig om Netduino-Plus CPU är utgifterna 19 sekunder i sömn eller tugga bitar från Weather Underground. Jag fick inget bättre att göra och även om jag ville, det lämnas utan minne att göra något mer. Så, låt den krypa genom bäcken vid sin egen pasta, och dessa 19 sekunder bör ingen roll mycket till någon. Du kommer att märka att ombord LED på Netduino (cool blå en) tänds när den gör sin sköldpadda parsning av XML-data.
Jag också repurposed knappen ombord på Netduino-Plus att agera som "Synkronisera tid och väder information nu" i stället för återställning. Denna förändring var användbart vid felsökning och jag är nöjd med power återvinning som riktig reset ändå.
Killarna i Weather Underground verkställa faktiskt de gränser som är 500 samtal dagligen eller 10 minuters. Så är det därför jag inte delar min nyckel med dig här och även du bör undvika detta. Jag med deras logotyp och grejer som deras användarvillkor villkor kräver.
Tjänsten AskGeo var i alfa- eller beta när jag började använda den. Nu de flyttade till Amazon cloud och gjort smärre ändringar i tjänsterna. Jag uppdateras koden, så du inte borde bry sig om något av detta. Vänligen observera bör du registrera dig med dem också och samma drill om att inte dela din nyckel offentligt.
Om "trick" för att ta reda på plats, är det inte utan begränsning. Den bör fungera på alla nätverk, men på kontoret kan det vara lite av en utmaning. Om ditt nätverk går genom en mycket avlägsen proxy, som många organisationer fortfarande använder för anslutande fjärranslutna kontor till internet, då platsen Netduino-Plus finner där är din proxyserver. Det är ganska lätt att ändra Netduino-Plus kod att använda fasta plats istället för auto-upptäcka det, och jag kommer att låta intresserade göra det själva. Tips: Allt du behöver är att använda fasta longitud och latitud i funktionen "InitLocation" kodad i filen Program.cs