Repository des Well-Level-Projektprojekts mit Quellcodes für JSON-Clients – Github: Pegelmesser
Arduino Ethernet Wiznet W5100 / W5500 ESP8266 ESP32 Ultraschall HC-SR04 JSN-SR04T Sigfox JSON MQTT
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

JSON-Clients - Pegelanzeige


Der auf der Arduino-Plattform ESP8266, ESP32 aufgebaute JSON-Client ermöglicht die Verbindung über einen Websocket zu einem Webserver (Webinterface von Leveler). Der Client macht alle 60 Sekunden eine zyklische HTTP-GET-Anfrage, um den Inhalt der /json_output.php abzurufen , wo der Webserver JSON-Daten zu Wasserstand (in Zentimetern), Brunnenvolumen (in Litern) basierend auf der aktuell eingestellten Tiefe und dem Brunnendurchmesser verteilt. Die geladene JSON-Nutzlast kann den JSON-Client aus der HTTP-Antwort analysieren und diese Zeichenfolge dann deserialisieren. Nach der Deserialisierung kann auf die einzelnen Schlüssel, denen die Werte zugeordnet sind, zugegriffen und diese bezogen werden -> parsen. Die abgeglichenen Daten werden auf den UART geschrieben - Serielle Leitung - 115200 Baud / s. In der Benutzeranwendung, die zu den vorhandenen Quellcodes von JSON-Clients hinzugefügt werden kann, ist es möglich, Entitäten basierend auf diesen Werten zu steuern, zum Beispiel: automatische Bewässerung nach Erreichen eines bestimmten Wasserstands, Wasserpumpen, Pumpenstart, Liebling. Ein Teil der Firmware, die als MQTT oder MQTTS (verschlüsseltes MQTT) gekennzeichnet ist, ist ein erweiterter JSON-Client mit der Fähigkeit zum Senden - Veröffentlichen von Daten an MQTT Broker IoT Industries Slovakia - slowakischer kostenloser MQTT-Broker, der für Entwickler entwickelt wurde. Sowohl die MQTT- als auch die MQTTS-Variante verwenden einen Socket, der auch für HTTP-Anforderungen verwendet wird, um JSON-Payloads zu erhalten. Der vorhandene MQTT-Server kann in Ihrem Quellcode durch Ihren ersetzt werden, sodass Sie auch Daten aus dem Pegelmesser in Hausautomationssystemen (Hassio, Mosquitto MQTT, Domoticz, Loxone und andere ...) verfügbar machen können. In der aktuellen Softwareimplementierung sendet der Mikrocontroller (JSON-Client) die gewonnenen Daten an den MQTT-Broker im Topic-Level-Meter, während die einzelnen Temperaturen in Subtopics differenziert werden.

Beispielprogrammimplementierungen für JSON-Clients: Hier verfügbar

Verfügbare Bibliotheken für Mikrocontroller (Arduino / ESP) - JSON-Clients


Bibliotheksarchiv (.zip) expandieren zu C:/Users/[User]/Documents/Arduino/libraries
Name der Bibliothek Bibliotheksfunktion Herunterladen
PubSubClient

Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega, ESP8266 und ESP32. Es ermöglicht die Kommunikation über das MQTT-Protokoll, es ist auch möglich, eine verschlüsselte Verbindung mit dem MQTT-Broker zu implementieren, für ESP-Mikrocontroller ist die Verwendung der WiFiClientSecure-Klasse erforderlich.

Herunterladen
ArduinoJson

Bibliothek für AVR-Mikrocontroller (ATmega) Arduino Uno / Nano / Mega, ESP8266 und ESP32. Es ermöglicht Ihnen, eine Zeichenfolge in einer JSON-Struktur zu deserialisieren, es kann den Wert analysieren, der dem Schlüssel zugewiesen ist.

Herunterladen
Die MQTTS-Implementierung ist für ESP8266- und ESP32-Mikrocontroller verfügbar. ESP8266 und ESP32 verwenden ein Root-CA-Zertifikat für die verschlüsselte Verbindung zum MQTT-Server. Der verschlüsselte Port des MQTT-Servers ist standardmäßig 8883, unverschlüsselt 1883. Um ein Root-CA-Zertifikat für einen bestimmten MQTT-Server (Domain) zu erhalten, kann das OpenSSL-Tool verwendet werden, das ein einfaches Abrufen und Anzeigen der betreffenden Informationen ermöglicht. Die einzelnen Zertifikate sind in Chain-of-Trust-Reihenfolge aufgelistet, d. von Root CA zu Intermediate.
Befehl zum Abrufen des Root-CA-Zertifikats, das das Zertifikat für den MQTT-Server (Aussteller) ausgestellt hat:
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null

Beispieldatenliste im JSON-Format

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

Die für das Veröffentlichen auf MQTT Broker verwendeten Themen sind:


  • hladinomer/objem - für Brunnenvolumen in Liter
  • hladinomer/vyska - für den aktuellen Wasserstand im Brunnen in Zentimetern

  • Thema zum Abonnieren:


  • hladinomer/# - oruft alle Unterthemen ab hladinomer/, also das Volumen des Brunnens und die Höhe des Wasserspiegels
  • Der MQTT-Client hat ein abonniertes Abonnement für das Messgerät auf Hauptthemenebene und alle seine Unterthemen. Gleichzeitig kann es überprüfen, ob die Informationen erfolgreich auf MQTT Broker veröffentlicht wurden – es schreibt sie zurück in den UART. WARNUNG: Der in der Beispielimplementierung verwendete MQTT-Broker IoT Industries Slovakia ist öffentlich und daher können die Daten von jedem Benutzer geändert, überschrieben und gelesen werden! Wenn ein anderer Benutzer die JSON-Client-Firmware unverändert auf seinen Mikrocontroller hochlädt, überschreibt er die Daten im vordefinierten Thema und Sie überschreiben sie. Es ist daher ratsam, während der eigentlichen Implementierung ein anderes Thema zu wählen, an das die Daten gesendet werden.


    JSON-PHP-Ausgabe, Analyse und Veröffentlichung im MQTT-Broker:


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

    HiveMQ-Client – Thema abonnieren hladinomer/#

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