JSON klient postavený na platforme Arduino, ESP8266, ESP32 umožňuje pripojenie cez websocket k WiFi termostatu. Klient vykonáva cyklický HTTP GET request každých 15 sekúnd pre získanie obsahu podstránky /get_data.json, kde webserver distribuuje dáta o cieľovej teplote, hysteréze a aktuálne nameranej teplote senzorom DS18B20 na OneWire zbernici v JSON formáte. Načítaný JSON payload dokáže JSON klient načétať v HTTP response (odpovedi webservera) a následn tento reťazec deserializuje. Po deserializácii je možné pristupovať k jednotlivým kľúčom JSON formátu, ku ktorým sú priradené hodnoty a tie vyparsovať. Vyparsované dáta sa vypíšu na UART - Sériovú linku - 115200 baud/s. V používateľskej aplikácii, ktorá môže byť do existujúcich zdrojových kódov JSON klientov doplnená je možné ovládať entity na základe týchto hodnôt, napríklad: otváranie ventilov radiátorov, solenoid, vetranie, uzavretie okien pri aktívnom vykurovaní atď.. Prípadne je možné dáta archivovať - odoslať ich na webserver, kde môžu byť uložené napríklad do MySQL databázy, do Loxone domácej automatizácie. Súčasťou firmvéru označeného ako MQTT, respektíve MQTTS (šifrované MQTT) je rozšírený JSON klient o možnosť odosielať - Publishovať na MQTT Broker IoT Industries Slovakia - slovenský free MQTT Broker určený pre vývojárov. MQTT i MQTTS variant využíva socket, ktorý sa používa i pre HTTP request pre získanie JSON payloadu. Existujúci MQTT server môže byť v zdrojových kódoch nahradený za váš a tak môžete dáta z termostatu sprístupniť aj do systémov domácej automatizácie (Hassio, Mosquitto MQTT, Domoticz, Loxone a iné...). V aktuálnej programovej implementácii mikrokontróler (JSON klient) odosiela získané dáta na MQTT Broker do topicu termostat, pričom jednotlivé teploty sú odlíšené v subtopicoch.
Názov knižnice | Funkcia knižnice | Stiahnuť |
---|---|---|
PubSubClient |
Knižnica pre AVR mikrokontroléry (ATmega) Arduino Uno / Nano / Mega, ESP8266 a ESP32. Umožňuje komunikovať po MQTT protokole, možno implementovať aj šifrované spojenie s MQTT Brokerom, vyžaduje sa použitie WiFiClientSecure triedy u ESP mikrokontrolérov a vloženie Root CA certifikátu v .pem formáte. |
Stiahnuť |
ArduinoJson |
Knižnica pre AVR mikrokontroléry (ATmega) Arduino Uno / Nano / Mega, ESP8266 a ESP32. Umožňuje deserializovať reťazec v JSON štruktúre, dokáže vyparsovať hodnotu, ktorá je priradená ku kľúču. |
Stiahnuť |
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null
MQTT klient má prihlásený Subscribe na hlavný topic termostat a všetky jeho subtopicy. Dokáže tak zároveň aj overiť, či bola informácia na MQTT Broker úspešná publikovaná. UPOZORNENIE: MQTT Broker IoT Industries Slovakia, ktorý sa vo vzorovej implementácii používa je verejný a tak môžu byť dáta zmenené, prepísané, čítané akýmkoľvek používateľom! Ak do svojho mikrokontroléru nahrá firmvér JSON klienta bez zmeny akýkoľvek iný používateľ, bude vám dané dáta v preddefinovanom topicu prepisovať a rovnako aj vy jemu. Je tak vhodné pri vlastnej implementácii zvoliť iný topic, kam budú dáta odosielané.