IoT badrum vakans indikator för hackare (5 / 6 steg)
Steg 5: Några anteckningar i kodexen: styrkan i THE CLOUD
OK, får ögat-rullande ur vägen. "Molnet" är lika stor ett modeord som någon och ibland hörs doofuses gå på om "molnet" som inte har ett bra grepp om vad de talar om. Du kan även arbeta för någon sådär.
Låt oss för ett ögonblick på vad Spark.io molnet är och vad det ger oss. När vi registrerar våra kärnor med vårt konto och förse dem med wifi autentiseringsuppgifter, är de mer än bara Arduino-ish saker med WiFi radioapparater limmas på. Det finns en tjänst för oss som, först och främst tillåter oss att programmera kärnar ur trådlöst. Det okända som vi kan publicera"variabler (som"temperatur"eller"isItSafeToUseTheBloominglabsBathroom"(enligt docs, variabelnamn trunkeras vid det 12: e tecknet, så koncis)), och alla program med rätt referenser kan läsa värdet genom att ringa en URL, utan att vi har att hacka upp en li'l webbserver med massor av gnarly sträng hantering och socket programmering bara för detta en sak.
På samma sätt kan vi registrera funktioner som kan anropas via en URL och krokar för smartphone apps, webbplatser eller tjänster för att skicka kommandon trådlöst till vår kärnverksamhet, varhelst vi väljer att lägga den (förutsatt att den har tillgång till trådlöst).
Även kan vi både publicera och prenumerera-tjänster, så att vi inte behöver ta till avsökning för en värdeändring (det finns dock Betygsätt gränser för publicering, om ett meddelande per sekund, så se upp).
Våra badrum indikatorn är en bra passform för publicera/prenumerera. Indikatorn prenumererar på tjänsten som låter oss veta om badrummet är öppen. Den bara gör något om det blir ett meddelande.
Så på många sätt detta är en riktigt enkel sak, det ger oss ett smakprov på makt och möjligheter. Indikatorn kan ha ett API och kan användas av en trådlös dörrklocka eller en annan anmälningssystem förutom dess nu blygsam roll som låter oss veta om badrummet är ocupado.
Sensor publicerar när tillståndet beläggning har ändrats, så att vi ange detta i setup():
Spark.publish ("bathroomStateToggle", "Staten", 0, privata); Ställa in Spark.publish() så att staten har publicerats till Spark Cloud privat
När vi vill publicera en förändring för våra ivriga lyssnare, gör vi detta:
Spark.publish ("bathroomStateToggle", val? "LEDIG": "OCKUPERADE"); publicera staten till Spark molnet som VAKANT/ockuperade
Vi publicerar också beläggning värde som en variabel:
Spark.Variable ("bathroomState", badrum, sträng);
Att använda sig av dessa uppdateringar på indikatorn är lätt. Under Inställningar förklara vi vi prenumererar denna info och ange funktionen att ringa när vi får en uppdatering:
Spark.subscribe ("bathroomStateToggle", bathroomStateToggle, MY_DEVICES);
Funktionen är ganska enkel:
När får vi något från publicerade
void bathroomStateToggle (const char * växla, const char * openClosed) {
anslutna = sant;
om (strcmp(openClosed,"VACANT") == 0) {
Serial.println("VACANT");
bathroomVacant = sant;
Flashy(0,255,0,defaultDelay,10);
}
annat {
Serial.println("occupied");
bathroomVacant = false;
flashiga (255,0,0, defaultDelay, 10);
}
}