Zápisník experimentátora
Hierarchy: Internet vecí
V predchádzajúcom článku sme sa oboznámili so serverom dweet.io. V dnešnom článku na tento server odošleme vzorové údaje pomocou dosky Arduino MKR1000.
Budeme odosielať na adresu veci arduino_slovakia_thing. Budú sa odosielať dva údaje:
Vizuálne môžeme skontrolovať odoslané údaje priamo na serveri. Je tam možnosť priebežne sledovať odosielané údaje. Výsledok sa zobrazuje v podobe jednoduchého grafu. Naše odosielané údaje nájdeme na adrese https://dweet.io/follow/arduino_slovakia_thing.
Pozor na to, že vizualizáciu možno sledovať iba na online dátach. Čiže pokiaľ neodosielate v tej chvíli nejaké údaje, nebudete na tomto hyperlinku vidieť nič.
Aby sme si to nekomplikovali, použijeme nasledovné knižnice:
Pomocou knižnice Arduino JSON library si pripravíme podkladové údaje vo formáte JSON a pomocou knižnice ArduinoHttpClient ich odošleme.
Najprv je potrebné všetky použité knižnice includovať. V súbore password.h mám moje prístupové meno a heslo do WiFi. Vy si musíte nastaviť vlastnú kombináciu.
#include "password.h"
#include <WiFi101.h>
#include <ArduinoHttpClient.h>
#include <ArduinoJson.h>
Nasleduje definícia premenných.
int status = WL_IDLE_STATUS;
const char server[] = "dweet.io";
WiFiClient wifi;
HttpClient client(wifi, server, 80);
int statusCode = 0;
String response;
A samotné odoslanie. V kóde vidíme prípravu JSON dát, ich odoslanie na správnu URL a prečítanie vrátených údajov. Toto všetko sa opakuje každých 10 sekund.
void loop() {
StaticJsonBuffer<400> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root["light"] = 456+random(10);
root["temperature"] = 10.4+random(10)/10.;
root.prettyPrintTo(Serial);
Serial.println("");
char data[256];
root.printTo(data, sizeof(data));
client.post("/dweet/for/arduino_slovakia_thing", "application/json", data);
// read the status code and body of the response
statusCode = client.responseStatusCode();
response = client.responseBody();
Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);
delay(10000);
}
Zdrojový kód programu sa nachádza na GitHub.
21.12.2016