Projekt-Repository mit Quellcode für JSON-Clients - Github: Ethernet-Thermostat - JSON-Clients
Arduino Ethernet Wiznet W5100 / W5500 DS18B20 OneWire Dallas HTML Webserver WebSocket
JSON DATA
JSON DATA
ArduinoJSON
ArduinoJSON
MQTT
MQTT
HTTP
HTTP

JSON-Clients - Ethernet-Thermostat


Der auf der Arduino-Plattform ESP8266, ESP32 basierende JSON-Client ermöglicht die Verbindung über einen Websocket mit einem Ethernet-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-Nutzlast kann den JSON-Client aus der HTTP-Antwort parsen und dann diese Zeichenfolge deserialisieren. Nach der Deserialisierung ist es möglich, auf die einzelnen Schlüssel zuzugreifen, denen die Werte zugeordnet sind und diese zu erhalten -> parsen. Die übereinstimmenden Daten werden auf den UART geschrieben - Serielle Leitung - 115200 Baud / s. In einer Benutzeranwendung, die zu bestehenden JSON-Client-Quellcodes hinzugefügt werden kann, können Entitäten basierend auf diesen Werten gesteuert werden, z. 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 an den MQTT-Broker an das Wurzelthema des Thermostats, während die einzelnen Temperaturen in Unterthemen unterschieden 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/[Users]/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 - Ethernet-Thermostat


{
"Hysteresis":0.25,
"Target_Temperature":21.75,
"Actual_Temperature":21.43
}
Die Implementierung für MQTTS ist nur für die Plattformen ESP8266 und ESP32 verfügbar. ESP8266 verwendet eine verschlüsselte Fingerabdruckverbindung (MQTT-Serverzertifikat-Fingerabdruck), um eine verschlüsselte Verbindung herzustellen. ESP32 verwendet ein Root-CA-Zertifikat, um eine verschlüsselte Verbindung zum MQTT-Server aufbauen zu können. Der verschlüsselte Port des MQTT-Servers ist standardmäßig 8883, unverschlüsselt 1883. Um einen Fingerabdruck oder ein Root-CA-Zertifikat für einen bestimmten MQTT-Server (Domäne) zu erhalten, kann das kryptografische Tool OpenSSL verwendet werden, das ein einfaches Abrufen und Anzeigen der betreffenden Informationen ermöglicht.
Befehl zum Abrufen des MQTT-Server-Fingerabdrucks:
openssl s_client -connect mqttserver.com:8883 -showcerts < /dev/null 2>/dev/null | openssl x509 -in /dev/stdin -sha1 -noout -fingerprint
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

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

  • Thema für Abonnieren:


  • termostat/# - übernimmt alle Unterthemen unter dem termostat/, also Hysterese, aktuelle und Solltemperatur
  • 637 / 5000 Výsledky prekladov 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 - Ethernet 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