Depozitul de contor la nivel de proiect cu coduri sursă pentru clienții JSON - Github: Contor de nivel
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ecografie HC-SR04 JSN-SR04T Sigfox JSON MQTT
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

Clienți JSON - Contor de nivel


Clientul JSON construit pe platforma Arduino, ESP8266, ESP32 permite conectarea printr-un websocket la un server web (interfața web a Leveler). Clientul face o solicitare HTTP GET ciclică la fiecare 60 de secunde pentru a prelua conținutul /json_output.php pagina, unde serverul web distribuie date JSON privind nivelul apei (în centimetri), volumul sondei (în litri) pe baza adâncimii și diametrului sondei setate în prezent. Sarcina utilă JSON încărcată poate analiza clientul JSON din răspunsul HTTP și apoi deserializa acest șir. După deserializare, este posibil să accesați cheile individuale cărora le sunt alocate valorile și să le obțineți -> parse. Datele potrivite sunt scrise pe UART - linie serială - 115200 baud / s. În aplicația utilizator, care poate fi adăugată la codurile sursă existente ale clienților JSON, este posibilă controlul entităților pe baza acestor valori, de exemplu: irigarea automată după atingerea unui anumit nivel de apă, pomparea apei, pornirea pompei, dragă. O parte a firmware-ului marcată ca MQTT sau MQTTS (MQTT criptat) este un client JSON extins cu capacitatea de a trimite - Publica date către MQTT Broker IoT Industries Slovakia - Broker MQTT gratuit slovac conceput pentru dezvoltatori. Atât variantele MQTT, cât și MQTTS folosesc un socket, care este, de asemenea, utilizat pentru solicitările HTTP pentru a obține încărcături utile JSON. Serverul MQTT existent poate fi înlocuit în codul dumneavoastră sursă cu al dumneavoastră, astfel încât să puteți face și datele de la contorul de nivel disponibile în sistemele de automatizare a locuinței (Hassio, Mosquitto MQTT, Domoticz, Loxone și altele...). În implementarea software actuală, microcontrolerul (clientul JSON) trimite datele obținute către Broker MQTT în contorul de nivel de subiect, în timp ce temperaturile individuale sunt diferențiate în subteme.

Exemple de implementări de programe pentru clienții JSON: AICI

Biblioteci disponibile pentru microcontrolere (Arduino / ESP) - clienți JSON


Arhiva bibliotecii (.zip) extinde la C:/Users/[User]/Documents/Arduino/libraries
Numele bibliotecii Funcția de bibliotecă Descarca
PubSubClient

Bibliotecă pentru microcontrolere AVR (ATmega) Arduino Uno / Nano / Mega, ESP8266 și ESP32. Permite comunicarea prin protocolul MQTT, este de asemenea posibilă implementarea unei conexiuni criptate cu MQTT Broker, utilizarea clasei WiFiClientSecure este necesară pentru microcontrolerele ESP.

Descarca
ArduinoJson

Bibliotecă pentru microcontrolere AVR (ATmega) Arduino Uno / Nano / Mega, ESP8266 și ESP32. Vă permite să deserializați un șir într-o structură JSON, poate analiza valoarea care este atribuită unei chei.

Descarca
Implementarea MQTTS este disponibilă pentru microcontrolerele ESP8266, ESP32. ESP8266 și ESP32 utilizează un certificat CA rădăcină pentru conexiunea criptată la serverul MQTT. Portul criptat al serverului MQTT este 8883 în mod implicit, necriptat 1883. Pentru a obține un certificat Root CA pentru un anumit server (domeniu) MQTT, este posibil să utilizați instrumentul OpenSSL, care permite regăsirea și afișarea ușoară a informațiilor în cauză. Certificatele individuale sunt listate în ordinea lanțului de încredere, i. de la rădăcină CA la intermediar.
Comandă pentru a obține certificatul CA rădăcină care a emis certificatul pentru serverul MQTT (Emitent):
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null

Exemplu de listare a datelor în format JSON

{
"value": 378,
"volume": 1900.04
}

Subiectele utilizate pentru Publicare pe MQTT Broker sunt:


  • hladinomer/objem - pentru volum bine în litri
  • hladinomer/vyska - pentru nivelul actual al apei în centimetri

  • Topic pre Subscribe:


  • hladinomer/# - elimină toate subsubiectele de sub hladinomer/, deci volumul puţului şi înălţimea nivelului apei
  • Clientul MQTT are un abonament abonat la contorul principal al nivelului de subiect și la toate subiectele secundare ale acestuia. În același timp, poate verifica dacă informațiile au fost publicate cu succes pe MQTT Broker - le va scrie înapoi în UART. AVERTISMENT: MQTT Broker IoT Industries Slovakia, care este utilizat în implementarea eșantionului, este public și astfel datele pot fi modificate, suprascrise, citite de orice utilizator! Dacă orice alt utilizator încarcă firmware-ul clientului JSON pe microcontrolerul său fără nicio modificare, datele din subiectul predefinit vor fi suprascrise atât de dvs., cât și de el. Prin urmare, este recomandabil să alegeți un alt subiect la care datele vor fi trimise în timpul implementării efective.


    Ieșire PHP JSON, analizare și publicare în MQTT Broker:


    JSON client (Arduino, ESP8266, ESP32) pentru contor de nivel - ieșire UART

    Client HiveMQ - Abonare la subiect hladinomer/#

    JSON client MQTT Broker IoT Industries Slovakia - ieșire subiect - Abonați-vă termostat