Skip to content

Commit

Permalink
Update json_client.html
Browse files Browse the repository at this point in the history
  • Loading branch information
martinius96 authored Dec 10, 2023
1 parent bd15646 commit b813905
Showing 1 changed file with 14 additions and 19 deletions.
33 changes: 14 additions & 19 deletions docs/json_client.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,13 @@
</div>
<hr><center><h2>JSON klienti - Hladinomer</h2></center><hr>
<p style="text-align: justify;">
JSON klient postavený na platforme Arduino, ESP8266, ESP32 umožňuje pripojenie cez websocket k webserveru (webovému rozhraniu Hladinomera).
<b>Klient vykonáva cyklický HTTP GET request každých 60 sekúnd pre získanie obsahu podstránky <a href="http://arduino.clanweb.eu/studna_s_prekladom/json_output.php">/json_output.php</a>, kde webserver distribuuje dáta v JSON formáte o výške hladiny vody (v centimetroch), objeme studne (v litroch) na základe aktuálne nastavenej hĺbky a priemere studne.</b>
Načítaný JSON payload dokáže JSON klient vyparsovať z HTTP response a následne tento reťazec deserializovať.
Po deserializácii je možné pristupovať k jednotlivým kľúčom, ku ktorým sú priradené hodnoty a tie získať --> 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: automatizovaná závlaha po dosiahnutie určitej výšky hladiny vody, prečerpávanie vody, spustenie čerpadla, dárlingu.
<b>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ť dáta na MQTT Broker IoT Industries Slovakia - slovenský free MQTT Broker určený pre vývojárov.</b>
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 hladinomera 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 hladinomer, pričom jednotlivé teploty sú odlíšené v subtopicoch.
Arduino, ESP8266 a ESP32 platformy umožňujú pripojenie k webovému serveru (Hladinomera) pomocou JSON klienta cez WebSocket.
Klient pravidelne vykonáva HTTP GET request každých 60 sekúnd na získanie obsahu podstránky: <a href="http://arduino.clanweb.eu/studna_s_prekladom/json_output.php">/json_output.php</a>. Webserver distribuuje dáta vo formáte JSON o výške hladiny vody (v centimetroch) a objeme studne (v litroch) na základe aktuálne nastavenej hĺbky a priemere studne.
JSON klient pravidelne vykonáva HTTP GET request každých 60 sekúnd na získanie obsahu podstránky, kde sa tieto údaje nachádzajú.
Načítaný JSON payload je schopný klient vyparsovať z HTTP response a deserializovať. Po deserializácii je možné pristupovať k jednotlivým kľúčom a získať hodnoty. Tieto vyparsované dáta sú následne vypísané na UART (sériová linka) s rýchlosťou 115200 baud/s.
V používateľskej aplikácii, ktorá môže byť doplnená do existujúcich zdrojových kódov JSON klientov, je možné ovládať rôzne entity na základe získaných hodnôt. Napríklad automatizovaná závlaha po dosiahnutí určitej výšky hladiny vody, prečerpávanie vody alebo spustenie čerpadla.
Súčasťou firmvéru označeného ako MQTT, resp. MQTTS (šifrované MQTT), je rozšírený JSON klient, ktorý umožňuje odosielanie (publishovanie) dát na MQTT Broker IoT Industries Slovakia, slovenský bezplatný MQTT Broker určený pre vývojárov. MQTT a MQTTS variant využívajú socket, rovnaký ako pre HTTP request na získanie JSON payloadu.
Existujúci MQTT server môže byť v zdrojových kódoch nahradený vaším vlastným, čím sa umožní integrácia dát z hladinomera do systémov domácej automatizácie, ako sú Hassio, Mosquitto MQTT, Domoticz, Loxone a ďalšie. V aktuálnej programovej implementácii mikrokontrolér (JSON klient) odosiela získané dáta na MQTT Broker do topicu hladinomer, pričom jednotlivé teploty sú odlíšené v subtopicoch.
</p>
<div class="alert alert-success">
<strong>Ukážkové programové implementácie pre JSON klientov: </strong><a href="https://github.com/martinius96/hladinomer-studna-scripty/tree/master/examples/JSON_Hladinomer">TU</a>
Expand Down Expand Up @@ -141,10 +138,9 @@
</table>
</div>
<div class="alert alert-info">
<strong>Implementácia pre MQTTS je dostupná pre mikrokontroléry ESP8266, ESP32.</strong>
ESP8266 a ESP32 využíva Root CA certifikát pre šifrované spojenie s MQTT serverom. <b>Šifrovaný port MQTT servera je štandardne 8883, nešifrovaný 1883.</b>
Pre získanie Root CA certifikátu pre konkrétny MQTT server (doménu) je možné využiť nástroj OpenSSL, ktorý umožňuje jednoduché načítanie a zobrazenie predmetných informácii.
Jednotlivé certifikáty sú vypísané v Chain-of-Trust poradí, t.j. od Root CA po Intermediate.
<strong>Implementácia pre MQTTS je k dispozícii pre mikrokontroléry ESP8266 a ESP32.</strong> Oba mikrokontroléry využívajú Root CA certifikát na zabezpečené pripojenie k MQTT serveru. <b>Šifrovaný port MQTT servera je štandardne nastavený na 8883, zatiaľ čo nešifrovaný port je 1883.</b>
Pre získanie Root CA certifikátu pre konkrétny MQTT server (doménu) môžete využiť nástroj OpenSSL, ktorý jednoducho umožňuje načítať a zobraziť príslušné informácie.
Jednotlivé certifikáty sú vypísané v poradí Chain-of-Trust, teda od Root CA po Intermediate.
<br><b>Príkaz pre získanie Root CA certifikátu, ktorý vydal certifikát pre MQTT server (Issuer):</b><br>
<code>openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null</code>
</div>
Expand All @@ -165,11 +161,10 @@ <h4>Topic pre Subscribe:</h4>
<hr>
<li><b>hladinomer/#</b> - odoberá všetky subtopicy pod hladinomer/, teda objem, výšku</li>
<p style="text-align: justify;">
<b>MQTT klient má prihlásený Subscribe na hlavný topic hladinomer a všetky jeho subtopicy.
Dokáže tak zároveň aj overiť, či bola informácia na MQTT Broker úspešná publikovaná - spätne ju vypíše na UART.</b>
<b><font color="red">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!</font></b>
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é.
<b>MQTT klient je prihlásený na Subscribe hlavného topicu hladinomer a všetkých jeho subtopikov. Zároveň schopnosťou klienta je overiť úspešnú publikáciu informácie na MQTT Brokeri a následne ju spätne vypísať na UART.</b>
<b><font color="red">UPOZORNENIE: MQTT Broker IoT Industries Slovakia, použitý vo vzorovej implementácii, je verejný a dáta môžu byť zmenené, prepísané alebo čítané akýmkoľvek používateľom!</font></b>
Pri nahrávaní firmvéru JSON klienta do mikrokontroléru bez akejkoľvek zmeny môže iný používateľ prepisovať vaše dáta v preddefinovanom topiku a rovnako aj vy jemu.
Vlastná implementácia by mala zvoliť iný topik pre odosielanie dát s cieľom zabrániť nechcenému prepisovaniu.
</p>
<hr>
<h4>JSON PHP výstup, parsing a Publish na MQTT Broker:</h4>
Expand Down

0 comments on commit b813905

Please sign in to comment.