Zápisník experimentátora
Hierarchy: Internet vecí
V dnešnom článku sa pozrieme na prvý zo serverov, ktorý umožňuje ukladať údaje pre Internet vecí. Chcel by som tieto články o serveroch vždy rozdeliť na dva články. V prvom bude popísaný samotný server a spôsoby komunikácie. V druhom článku sa potom budem venovať konkrétnej komunikácii medzi Arduinom a serverom.
Tento server si nekladie za úlohu pokryť všetky možné oblasti skladovania a vizualizácie údajov. Zameriava sa skôr na to, aby ste naň jednoducho dopravili údaje a nemuseli sa trápiť s registráciou a komplikovaným nastavovaním.
Adresa | dweet.io |
Registrácia užívateľa | Nie je potrebná. Údaje možno odosielať aj bez užívateľskej registrácie. |
Cena | Odosielanie údajov je zadarmo. Server sa snaží získať peniaze za to, že si zakúpite zámky (locks), pomocou ktorých si uzamknete vlastné zariadenia. Uzamknutie tieto zariadenia ochráni pred zásahmi iných užívateľov a zabezpečí uskladnenie hodnôt na dobu jedného mesiaca. |
Všetky príklady budem predvádzať pomocou programu HTTPie a jeho výstupov.
Údaje sa odosielajú na URL /dweet/for/{thing}. Namiesto {thing} si doplníte vlastný názov zariadenia. Odosielané údaje sú vo formáte JSON. Server bude skladovať maximálne 5 posledných dweetov a maximálne 24 hodín. Ak chcete viac, musíte už platiť.
HTTPie
http -v post http://dweet.io/dweet/for/arduino_slovakia_thing temperature=10.4 light=456
Požiadavka
POST /dweet/for/arduino_slovakia_thing HTTP/1.1 Accept: application/json, */* Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 39 Content-Type: application/json Host: dweet.io User-Agent: HTTPie/0.9.6 { "light": "456", "temperature": "10.4" }
Odpoveď
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Connection: keep-alive Content-Encoding: gzip Content-Type: application/json Date: Tue, 06 Dec 2016 21:39:55 GMT Transfer-Encoding: chunked { "by": "dweeting", "the": "dweet", "this": "succeeded", "with": { "content": { "light": 456, "temperature": 10.4 }, "created": "2016-12-06T21:39:55.341Z", "thing": "arduino_slovakia_thing", "transaction": "2c46bb84-8af3-483f-9735-2077085f6a5f" } }
Pomocou tohoto príkazu získate posledný odoslaný dweet. Odpoveď sa získa z URL /get/latest/dweet/for/{thing}. Namiesto {thing} si doplníte vlastný názov zariadenia. Odosielané údaje sú vo formáte JSON.
HTTPie
http -v get http://dweet.io/get/latest/dweet/for/arduino_slovakia_thing
Požiadavka
GET /get/latest/dweet/for/arduino_slovakia_thing HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Host: dweet.io User-Agent: HTTPie/0.9.6
Odpoveď
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Connection: keep-alive Content-Encoding: gzip Content-Type: application/json Date: Wed, 07 Dec 2016 20:14:38 GMT Transfer-Encoding: chunked { "by": "getting", "the": "dweets", "this": "succeeded", "with": [ { "content": { "light": 400, "temperature": 10.2 }, "created": "2016-12-07T20:14:08.086Z", "thing": "arduino_slovakia_thing" } ] }
Pomocou tohto príkazu získate 5 posledných dweetov. Odpoveď sa získa z URL /get/dweets/for/{thing}. Namiesto {thing} si doplníte vlastný názov zariadenia. Odosielané údaje sú vo formáte JSON.
HTTPie
http -v get http://dweet.io/get/dweets/for/arduino_slovakia_thing
Požiadavka
GET /get/dweets/for/arduino_slovakia_thing HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Host: dweet.io User-Agent: HTTPie/0.9.6
Odpoveď
HTTP/1.1 200 OK Access-Control-Allow-Origin: * Connection: keep-alive Content-Encoding: gzip Content-Type: application/json Date: Wed, 07 Dec 2016 20:15:58 GMT Transfer-Encoding: chunked { "by": "getting", "the": "dweets", "this": "succeeded", "with": [ { "content": { "light": 400, "temperature": 10.2 }, "created": "2016-12-07T20:14:08.086Z", "thing": "arduino_slovakia_thing" }, { "content": { "light": 458, "temperature": 10.6 }, "created": "2016-12-07T20:13:59.771Z", "thing": "arduino_slovakia_thing" }, { "content": { "light": 456, "temperature": 10.4 }, "created": "2016-12-07T20:13:47.626Z", "thing": "arduino_slovakia_thing" }, { "content": { "light": 456, "temperature": 10.4 }, "created": "2016-12-06T21:39:55.341Z", "thing": "arduino_slovakia_thing" } ] }
Toto sú tri najdôležitejšie funkcie. Ďalšie sa týkajú uzamykania dweetov, prípadne streamovania, ale to sú funkcie, ktoré sú alebo za peniaze, alebo sa mi ich nepodarilo podľa dokumentácie naklikať. Alebo som to len nepochopil, ale nech som streamoval akokoľvek, nič sa mi nepodarilo prijať.
Na stránke /follow/{thing} je možné sledovať v grafickej podobe odosielané dweety. Na konkrétnej stránke sa potom animujú grafy konkrétnych hodnôt. Nachádza sa tam aj hypertext na stránku freeboard.io, ktorá vie vizualizovať tie isté údaje. Obe stránky patrie rovnakej firme, takže to vyzerá ako snaha získať ďalšie peniaze za vizualizácie.
V tomto článku sme získali základnú predstavu o HTTP požiadavkách, ktoré treba použiť na komunikáciu so serverom. V nasledovnom článku sa pokúsime túto komunikáciu realizovať pomocou Arduina MKR1000.
07.12.2016