Server pre IoT - dweet.io

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.

dweet.io

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.

Podporované operácie

Všetky príklady budem predvádzať pomocou programu HTTPie a jeho výstupov.

Odoslanie údajov

Ú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"
    }
}

Získanie posledného údaja

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"
        }
    ]
}

Získanie všetkých údajov

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

Ďalšie funkcie

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.

Arduino

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


Menu