Arduino IOT automation med ESP8266 (4 / 4 steg)
Steg 4: programmering
Hitta filen bifogad ino för att programmera arduino. / / uppdaterad firmware har lagts upp med bättre mottagning och lösa Tidsproblem med thingspeak api server. / / speciellt tack till Bookwormzero aka Neil för att hitta det timing problem. bra jobbet gjort.
Jag är använda arduino att läsa api och agera i enlighet med de uppgifter som mottagits. Vi kan använda någon internet-ansluten enhet för att styra arduino stiften. här jag, m vrida styrelsen ledde på och av genom att skriva H för hög och L för låg på webben api. Detta kan göras från var som helst i världen med internet.
Uppdaterat avsnitt:-
Följande kommandon används för att driva Thingspeak kanal.
- Uppdatering kanal Feed - få
FÅ https://api.thingspeak.com/update?api_key=your_api_key&field1=value
- Uppdatera kanal flöde - inlägget
Bokför https://api.thingspeak.com/update.json
api_key = din api-nyckel
Fält1 = värde du vill bokföra
- Få en kanal Feed
FÅ https://api.thingspeak.com/channels/your_channel_no/feeds.json?results=1
- Få en kanal fältet Feed
FÅ https://api.thingspeak.com/channels/your_channel_no/fields/1.json?results=1
- Få uppdateringar av Status
FÅ https://api.thingspeak.com/channels/your_channel_no/status.json
Uppdatering kanal foder-GET-begäran kan användas att skriva data till Fält1 genom att skriva Webbadressen i alla webbläsare med internet-anslutning. Detta fungera som vår fjärrkontroll dvs någon internet-ansluten enhet.
Nu för att styra sakerna måste vi läsa Fält1 data med hjälp av våra arduino och använda det som ett kommando för fördefinierade aktiviteter. T.ex jag använde "H" för att göra styrelsen ledde högt och "L" för att göra det låg.
För att läsa värdet för Fält1 skickar vi "få en kanal fältet foder-GET-begäran med hjälp av arduino och ESP8266.
Jag antar här att du arbetat tidigare med esp8266. När vi skickar GET-begäran, web api skicka vissa data i gengäld i sträng-format som kan läsas med uart av esp8266. Leta bara efter + IPD på följetong som det överförs om det finns något att läsa.
I returnerade strängen får du fältdata 1. Kolla in strängen nedan:-
{"channel":{"id":85291,"name":"IoT testing","description":"Home Automation cum controller","field1":"test led","field2":"fan","field3":"tv","field4":"light","created_at":"2016-02-07T13:01:17Z","updated_at":"2016-02-23T14:34:38Z","last_entry_id":695},"feeds":[{"created_at":"2016-02-23T14:34:38Z","entry_id":695,"field1":"L"}]}
fet är de viktigaste data måste vi använda. För att få det använde rätt jag ett trick här. som vi inte behöver hela strängen tittade jag efter "feeds" ordet som startpunkt eftersom det är unikt i hela strängen kommer bara en gång. och lagras urladdningsdjup strängen i en karaktär array. L är det 66: e tecknet efter Feeds. så array lagra detta värde bör vara array [65].
Använd detta värde för att utlösa någon funktion som du vill.
Obs: - ändra arrayen [65] till array [i-13] för bättre mottagning och lösa problem relaterade till identifiera fältvärdet.
ändra esp8266 överföringshastigheten till 57600 eller lägre före användning som hårdvara överföringshastigheten 115200. mjukvaran följetong bör vara lägre än hårdvara.