NeoWeather: Ambient weer Indicator (7 / 7 stap)

Stap 7: Wat is in de Agent-Code?


De agent heeft twee banen:

  1. Praat met ondergrondse weer om de meest recente voorwaarden
  2. Serveer het web UI wanneer nodig zodat de gebruiker kan de locatie bijwerken of Zie de uitgebreide prognose.

Laten we gaan vooruit en ga kijken naar "prepWebpage" voor een moment. Ongeveer 150 lijnen naar beneden, neem een kijkje op getConditions.

Het belangrijkste stuk van de getConditions functie ziet er zo uit:

 local url = format("%s/%s/conditions/q/%s.json", WUNDERGROUND_URL, WUNDERGROUND_KEY, safelocationstr); local res = http.get(url, {}).sendsync(); 

Dit fragment bouwt een aanvraag-URL van de Weather Underground API's basis-URL en uw API-sleutel, dan stuurt het en wacht op een antwoord, dat is opgeslagen in res. Als alles goed gaat, bevat res vervolgens alle gegevens die u nodig heeft over het weer als een blok voor JSON, dat we gemakkelijk kunnen ontleden:

 local response = http.jsondecode(res.body);<br>local weather = response.current_observation; LAT = weather.observation_location.latitude.tofloat(); LON = weather.observation_location.longitude.tofloat(); LOCATIONSTR = weather.observation_location.full; 

Uiteindelijk, de agent brengt samen een prognose voor de logs, dan stuurt de belangrijkste stuk op het apparaat:

 device.send("seteffect", {conditions = weather.weather, temperature = weather.temp_c}); 

Kijken bekend? Dat is een oproep tegen de "seteffect"-handler zagen we in het apparaat, waar de prognose wordt geparseerd en de effecten zijn ingesteld. Dit is waar het vandaan komt. De tweede parameter hier is de gegevens die het apparaat ontvangt: een tabel met twee objecten, één voor de tekenreeks van de voorwaarden en één voor de huidige temperatuur.

De tweede taak van de agent, serveert het web UI, wordt rechts onder de getConditions, in http.onrequestbehandeld. Dit is de algemene HTTP-aanvraag-handler, en u kunt schrijven om te doen zo ongeveer alles wat die je in reactie op de vele soorten van HTTP-verzoeken wilt. Dit men is vrij eenvoudig. Het controleert het pad om te zien als het verzoek kwam ergens specifieker dan gewoon de URL van de agent. Er zijn hier twee opties die leiden specifieke gedrag tot zal. Als het pad is ingesteld op "getLocation", is het een verzoek om te zien waar de huidige voorspelling locatie is (waarschijnlijk uit het web UI):

 if (path == "/getlocation" || path == "/getlocation/") {<br> if (LAT == null || LON == null) { getConditions(); } resp.send(200, http.jsonencode( { "lat":LAT,"lon":LON,"name":LOCATIONSTR } )); } 

Ook als het pad is ingesteld op "setLocation", is het een verzoek aan de verwachte locatie wijzigen.

 else if (path == "/setlocation" || path == "/setlocation/") {<br> LOCATIONSTR = req.body; getConditions(); resp.send(200, http.jsonencode( { "lat":LAT,"lon":LON,"name":LOCATIONSTR } )); // keep the latest user-set location through agent restarts savedata.locationstr <- LOCATIONSTR; server.save(savedata); } 

Als geen pad wordt helemaal geleverd, de agent wordt verondersteld dat het een aanvraag van een browser, en handen terug een grote grote multiline string - dat gebeurt als een web-pagina! Hierdoor wordt de agent fungeren als een kleine webserver:

 else {<br> resp.send(200, WEBPAGE); } 

Dat is alles wat er is- en congrats op uw nieuwe gadget van het weer. Geniet van!

Gerelateerde Artikelen

Weer Indicator draadloze

Weer Indicator draadloze

Heb ik besloten met de Linkit One's GSM mogelijkheden maken een indicator weer. Dit zou mij om iets te maken zowel praktisch als visueel aangenaam, een draadloze weer indicator.Stap 1: Materialen/Tools HulpmiddelenSoldeerboutComputerLinKit OneGSM ann
Communicatie / power vak

Communicatie / power vak

Dus er veel dozen van de draagbare macht daar zijn en er zijn tal van Ham radio ga kits (radio in een doos) deze kit combineert deze samen samen met een iPad en Bluetooth luidspreker voor extra flexibiliteit. Ik heb nu een beter geordende set up neem
Hoe maak je een wolk van de Lightning

Hoe maak je een wolk van de Lightning

Ik wilde echt een beetje wolk die oplichten zou alsof het was gevuld met bliksem. Na een beetje googlen, struikelde ik op "de wolk" door Richard Clarkson. Het is een prachtig uitgevoerde concept en ik wilde om te zien of ik een ook kon maken. Er
Bureau ventilator/kachel

Bureau ventilator/kachel

/ * stijldefinities * / tabel. MsoNormalTable {mso-stijl-naam: Standaardtabel; mso-tstyle-rowband-grootte: 0; mso-tstyle-colband-grootte: 0; mso-stijl-noshow:yes; mso-stijl-prioriteit: 99; mso-stijl-ouder: "";" mso-padding-alt: 0 cm 5.4pt 0
SODAQ zonne-aangedreven autonome regen observatie station

SODAQ zonne-aangedreven autonome regen observatie station

Dit is de eerste in een serie tutorials we in de komende paar weken op het gebruik van het SODAQ-bord voor autonome, outdoor zonne-aangedreven sensor stations schrijven zal.Wij gebruiken de SODAQ, een Arduino compatibel zonne-aangedreven board (www.s
Zorg voor Cochin kuikens & vrienden in koude, natte weer - voorzichtig kippen op het werk! Poules sous serre! Como commandoregel un ambiente seguro para nuestros pollos Orgánicos nl invierno

Zorg voor Cochin kuikens & vrienden in koude, natte weer - voorzichtig kippen op het werk! Poules sous serre! Como commandoregel un ambiente seguro para nuestros pollos Orgánicos nl invierno

hoe we zorgen voor een beschutte omgeving voor onze vrije uitloop pluimvee in de Winter en hoe ze op hun beurt bepalen van ongedierte en werken van de bodem in de serre. Als u wilt weten hoe we een serre voor 5 dollar/euro/pond gemaakt, volg deze lin
Spectrographic Auroral Indicator - een Noorderlicht waarschuwing apparaat

Spectrographic Auroral Indicator - een Noorderlicht waarschuwing apparaat

---3/16/2011 bewerken: The Wing Kp voorspeld geomagnetische activiteit Index model wordt nu geïmplementeerd en operationele. Costello wordt nu beschouwd als niet-operationele en op 23 Mar 2011 zal worden gestaakt. Opmerkingen en vragen zijn welkom op
Arduino IoT weer klok

Arduino IoT weer klok

In dit Instructable bouwen we een klok die ook binnen en buiten de klimatologische omstandigheden toont.Ik gebruikte om een koele kleine klok die, naast het vertellend de tijd, ook de temperatuur in het huis, de datum en de buitentemperatuur via een
ESP8266 Draadloze Toilet zede Indicator (Smart Home)

ESP8266 Draadloze Toilet zede Indicator (Smart Home)

Als een ingenieur is het geluk om te werken voor een bedrijf dat make-up met een groep van de maker. Omdat wij vaak sommige problemen ondervinden in ons leven, onze manger laten toe om onze creativiteit in het volledige spel te wijten aan de geopende
IoT badkamer vacature Indicator voor Hackers

IoT badkamer vacature Indicator voor Hackers

Wanneer in de Braziliaanse deelstaat Flow, wilt creatieve mensen meestal niet nemen van een pauze voor de sterfelijke overwegingen zoals eten of badkamer pauzes. De grote Beethoven hield beroemde een kamer pot onder zijn piano, om niet verliest momen
DIY Ambient Lighting omgevingslicht met Hyperion. Werkt met HDMI/AV-bronnen || Raspberry Pi

DIY Ambient Lighting omgevingslicht met Hyperion. Werkt met HDMI/AV-bronnen || Raspberry Pi

Dit is een uitbreiding van mijn vorige Ambient Lighting lichaamsbouw. Neem een kijkje op het eerste:Ditmaal zal ik een nieuwe functie toevoegen aan mijn DIY Ambient Lighting. Tot nu toe werkt het alleen met de software van Raspbmc. Dat betekent dat i
Met behulp van een Co-axiale Dial-Indicator om te vinden van het midden van een cirkel

Met behulp van een Co-axiale Dial-Indicator om te vinden van het midden van een cirkel

ooit afgevraagd hoe iemand die perfect geboorde gaten in dat stuk van ronde voorraad of hoe die persoon op de molen de draaitafel zo perfect gecentreerd gecompenseerd?  Vraag me niet meer af.  Met behulp van een Co-axiale indicator te vinden van het
Hoe maak je een Ambient Lamp uit een kartonnen doos

Hoe maak je een Ambient Lamp uit een kartonnen doos

de volgende tutorial, oorspronkelijk geschreven voor mijn taal hacken blog, ChineseHacks.com, ziet u hoe een ambient lamp uit een doos van Taiwan bier maken door te snijden de Chinese karakters. U kunt elk soort vak echter en knip een logo of een ste
Arcade kast met Ambient licht effecten

Arcade kast met Ambient licht effecten

een zelfgemaakte arcade houten kast, met commerciële arcade kwaliteitscontroles en geïntegreerde Ambient werkelijkheid het systeem van gevolgen.Het kabinet hout is gesneden uit 4 x 8' sandwichpaneel van Home Depot. De Arcade controller is een HotRod