WLAN-Library¶
Die WLAN-Library ist für die Datenübertragung zwischen dem ESP und dem Server zuständig. Dazu gehören sowohl die Anmeldung des ESP am Server als auch das Senden und Empfangen von Capability-Werten. Zusätzlich enthält die Library eine interne Datenstruktur, in der die aktuellen Werte der Capabilities lokal auf dem ESP gespeichert werden.
Funktion¶
WLAN¶
Für die WLAN-Einrichtung steht ein Access-Point-Modus zur Verfügung, über den die WLAN-Zugangsdaten auf dem ESP hinterlegt werden können. Anschließend versucht das Gerät, sich mit dem angegebenen Netzwerk zu verbinden. Sollte keine Verbindung möglich sein, wechselt der ESP wieder in den Access-Point-Modus. Eine Alternative Methode für die Eingabe der Credentials ist über die App per BLE.
MQTT¶
Die MQTT-Funktionalität wird über die C++-Bibliothek PubSubClient bereitgestellt. Dadurch wird die WLAN-Library deutlich vereinfacht. Beim Start verbindet sich der ESP zunächst per MQTT mit dem Server und übermittelt dabei unter anderem das Thing Model.
Datenspeicherung¶
Die Library verwendet ein globales JSON-ähnliches Dokument namens gCapabilitiesDoc. Dieses wird beim Start anhand des Thing Models aufgebaut, sodass für jede Capability ein Eintrag unter data mit einem leeren Anfangswert angelegt wird.
Wenn ein neuer Wert gespeichert werden soll, schreibt wlan_setCapabilityValue diesen direkt in die lokale Struktur, ohne dass dafür zunächst MQTT oder BLE nötig ist. Beim Lesen liefert wlan_getCapabilityValue den zuletzt lokal gespeicherten Wert zurück. Dadurch muss nicht für jede spezielle Capability eigene Logik oder ein eigener Interrupt geschrieben werden, da eingehende MQTT-Nachrichten direkt in diese Datenstruktur übernommen und bei Bedarf später im Code wieder abgerufen werden können.
