Odosielanie údajov do cloudu - dweet.io

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.

Aké údaje budeme odosielať

Budeme odosielať na adresu veci arduino_slovakia_thing. Budú sa odosielať dva údaje:

  • light - Náhodne simulovaná úroveň osvetlenia.
  • temperature - Náhodne simulovaná teplota.

Kontrola odoslaných údajov

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č.

Použité knižnice

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.

Program

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

Zdrojový kód programu sa nachádza na GitHub.


21.12.2016


Menu