Niveaumålerprojektlager med kildekoder til JSON-klienter - Github: Niveaumåler
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultralydssensor HC-SR04 JSN-SR04T Sigfox JSON MQTT
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

JSON-klienter - Niveaumåler


JSON-klient bygget på Arduino-platformen, ESP8266, ESP32 tillader forbindelse via en websocket til en webserver (webgrænseflade af Leveler). Klienten foretager en cyklisk HTTP GET-anmodning hvert 60. sekund for at hente indholdet af /json_output.php , hvor webserveren distribuerer JSON-data på vandstand (i centimeter), brøndvolumen (i liter) baseret på aktuelt indstillet dybde og brønddiameter. Den indlæste JSON-nyttelast kan parse JSON-klienten fra HTTP-svaret og derefter deserialisere denne streng. Efter deserialisering er det muligt at få adgang til de individuelle nøgler, som værdierne er tildelt, og få dem -> parse. De matchede data skrives til UART - Seriel linje - 115200 baud/s. I brugerapplikationen, som kan føjes til de eksisterende kildekoder for JSON-klienter, er det muligt at styre enheder baseret på disse værdier, for eksempel: automatiseret kunstvanding efter at have nået et bestemt vandniveau, vandpumpning, pumpestart, skat. En del af firmwaren markeret som MQTT eller MQTTS (krypteret MQTT) er en udvidet JSON-klient med mulighed for at sende - Publicer data til MQTT Broker IoT Industries Slovakia - Slovakisk gratis MQTT Broker designet til udviklere. Både MQTT- og MQTTS-varianterne bruger en socket, som også bruges til HTTP-anmodninger for at opnå JSON-nyttelast. Den eksisterende MQTT-server kan erstattes i din kildekode af din, så du også kan stille data fra niveaumåleren til rådighed i hjemmeautomationssystemer (Hassio, Mosquitto MQTT, Domoticz, Loxone og andre ...). I den aktuelle softwareimplementering sender mikrocontrolleren (JSON-klienten) de opnåede data til MQTT Broker i emneniveaumåleren, mens de individuelle temperaturer er differentieret i underemner.

Eksempel på programimplementeringer til JSON-klienter: HER

Tilgængelige biblioteker til mikrocontrollere (Arduino / ESP) - JSON-klienter


Biblioteksarkiv (.zip) udvides til C:/Users/[User]/Documents/Arduino/libraries
Bibliotekets navn Bibliotek funktion Hent
PubSubClient

Bibliotek til AVR mikrocontrollere (ATmega) Arduino Uno / Nano / Mega, ESP8266 og ESP32. Det muliggør kommunikation via MQTT-protokollen, det er også muligt at implementere en krypteret forbindelse med MQTT Broker, brugen af WiFiClientSecure er påkrævet for ESP-mikrocontrollere.

Hent
ArduinoJson

Bibliotek til AVR mikrocontrollere (ATmega) Arduino Uno / Nano / Mega, ESP8266 og ESP32. Det giver dig mulighed for at deserialisere en streng i en JSON-struktur, den kan parse den værdi, der er tildelt en nøgle.

Hent
MQTTS-implementering er tilgængelig for ESP8266, ESP32 mikrocontrollere. ESP8266 og ESP32 bruger et Root CA-certifikat til krypteret forbindelse til MQTT-serveren. Den krypterede port på MQTT-serveren er 8883 som standard, ukrypteret 1883. For at få et Root CA-certifikat til en specifik MQTT-server (domæne) er det muligt at bruge OpenSSL-værktøjet, som giver mulighed for nem genfinding og visning af de pågældende oplysninger. De enkelte certifikater er opført i Chain-of-Trust rækkefølge, dvs. fra Root CA til Intermediate.
Kommando for at få det rod-CA-certifikat, der udstedte certifikatet til MQTT-serveren (udsteder):
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null

Eksempel på dataliste i JSON-format

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

Emnerne, der bruges til at udgive på MQTT Broker er:


  • hladinomer/objem - for brøndvolumen i liter
  • hladinomer/vyska - for den aktuelle vandstand i centimeter

  • Emne til abonnement:


  • hladinomer/# - fjerner alle underemner under hladinomer/, altså brøndens volumen og højden af vandstanden i brønden
  • MQTT-klienten har et abonnement på hovedemneniveaumåleren og alle dens underemner. Samtidig kan den bekræfte, at informationen er blevet offentliggjort på MQTT Broker - den vil skrive den tilbage til UART. ADVARSEL: MQTT Broker IoT Industries Slovakia, som bruges i eksempelimplementeringen, er offentlig, så dataene kan ændres, overskrives, læses af enhver bruger! Hvis en anden bruger uploader JSON-klientens firmware til deres mikrocontroller uden nogen ændring, vil dataene i det foruddefinerede emne blive overskrevet af dig såvel som af ham. Det er derfor tilrådeligt at vælge et andet emne, hvor dataene vil blive sendt under selve implementeringen.


    JSON PHP Output, Parsing og Publicer til MQTT Broker:


    JSON client (Arduino, ESP8266, ESP32) pre Hladiomer - UART výstup

    HiveMQ klient - Abonner emne hladinomer/#

    JSON client MQTT Broker IoT Industries Slovakia - výstup topicu - Subscribe termostat