Projekt-Repository mit Quellcode für JSON-Clients - Github: WLAN-Thermostat
ESP8266 ESP32 WiFi DS18B20 OneWire Dallas HTML Webserver WebSocket JSON mDNS UART
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

JSON-Clients - WLAN-Thermostat


Der auf der Arduino-Plattform ESP8266, ESP32 basierende JSON-Client ermöglicht die Verbindung über einen Websocket mit einem WLAN-Thermostat. Der Client führt alle 15 Sekunden eine zyklische HTTP-GET-Anfrage aus, um den Inhalt der Unterseite /get_data.json abzurufen, auf der der Webserver Zieltemperatur-, Hysterese- und aktuelle Temperaturdaten an den DS18B20-Sensor auf dem OneWire-Bus im JSON-Format verteilt . Die geladene JSON-Payload kann vom JSON-Client in einer HTTP-Antwort (Webserver-Antwort) gelesen werden und deserialisiert dann diesen String. Nach der Deserialisierung ist es möglich, auf die einzelnen Schlüssel des JSON-Formats, denen die Werte zugeordnet sind, zuzugreifen und diese zu parsen. Die übereinstimmenden Daten werden auf den UART geschrieben - Serielle Leitung - 115200 Baud / s. In der Benutzeranwendung, die zu den bestehenden Quellcodes von JSON-Clients hinzugefügt werden kann, ist es möglich, basierend auf diesen Werten Entitäten zu steuern, zum Beispiel: Öffnen von Heizkörperventilen, Magnetventil, Lüftung, Schließen von Fenstern bei aktivem Heizen usw . . Alternativ ist es möglich, Daten zu archivieren – an einen Webserver zu senden, wo sie beispielsweise in einer MySQL-Datenbank in der Loxone Hausautomation gespeichert werden können. Ein Teil der Firmware, die als MQTT oder MQTTS (encrypted MQTT) gekennzeichnet ist, ist ein erweiterter JSON-Client mit der Möglichkeit zum Senden - Publish to MQTT Broker IoT Industries Slovakia - Slowakischer kostenloser MQTT-Broker für Entwickler. Sowohl die MQTT- als auch die MQTTS-Variante verwenden einen Socket, der auch für HTTP-Anfragen zum Abrufen von JSON-Nutzlasten verwendet wird. Der vorhandene MQTT-Server kann in Ihrem Quellcode durch Ihren ersetzt werden, sodass Sie die Daten des Thermostats auch Hausautomationssystemen (Hassio, Mosquitto MQTT, Domoticz, Loxone und andere ...) zur Verfügung stellen können. In der aktuellen Software-Implementierung sendet der Mikrocontroller (JSON-Client) die erfassten Daten im Thermostat-Thema an den MQTT-Broker, während die einzelnen Temperaturen in Unterthemen differenziert werden.

Quellcodes für MQTT / MQTT + JSON-Clients sind verfügbar unter: JSON-Clients

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


Bibliotheksarchiv (.zip) erweitern auf 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 realisieren, die Verwendung der WiFiClientSecure-Klasse ist für ESP-Mikrocontroller erforderlich und das Einfügen eines Root-CA-Zertifikats im .pem-Format.

Herunterladen
ArduinoJson

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

Herunterladen

Beispieldatenliste im JSON-Format - WLAN-Thermostat


{
"Hysteresis":0.25,
"Target_Temperature":21.75,
"Actual_Temperature":21.43
}
Die MQTTS-Implementierung ist nur für ESP8266- und ESP32-Plattformen verfügbar. Beide Mikrocontroller 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 (Domäne) zu erhalten, kann das OpenSSL-Tool verwendet werden, das ein einfaches Abrufen und Anzeigen der betreffenden Informationen ermöglicht. Die Anweisung ist in der Chain of Trust-Hierarchie implementiert, d. das erste Zertifikat ist Root CA, gefolgt von Intermediate CA.
Root-CA-Zertifikatbefehl für Server:
openssl s_client -showcerts -verify 5 -connect mqttserver.com:8883 < /dev/null

Die für Publish on MQTT Broker verwendeten Themen sind:

  • termostat/hysteresis - für Hysterese
  • termostat/actual_temp - für die aktuell gemessene Temperatur
  • termostat/target_temp - für die Soll-(Referenz-)Temperatur
  • Topic pre Subscribe:

  • termostat/# - übernimmt alle Unterthemen unter dem termostat/, also Hysterese, aktuelle und Solltemperatur
  • Der MQTT-Client hat ein abonniertes Abonnement für das Hauptthema Thermostat und alle seine Unterthemen. Es kann auch überprüfen, ob die Informationen erfolgreich auf MQTT Broker veröffentlicht wurden. WARNUNG: Der in der Beispielimplementierung verwendete MQTT Broker IoT Industries Slovakia ist öffentlich und somit 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, werden die Daten im vordefinierten Thema sowohl von Ihnen als auch von ihm überschrieben. Es empfiehlt sich daher, während der eigentlichen Umsetzung ein anderes Thema zu wählen, an das die Daten gesendet werden.

    Blockdiagramm - Beschreibung der JSON-Client-Funktionalität:

    JSON klient - Arduino, ESP8266, ESP32, MQTT integrácia - WiFi termostat

    JSON-Client - UART-Ausgabe (Serielle Leitung):

    JSON client pre WiFi termostat - UART výstup

    HiveMQ-Client - Thema abonnieren termostat/#

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