IoT Export
Verbindungs Template

IoT Core MQTT Client

4min
verfügbar auf dem bsc pro ab version 3 7 0 einleitung das export modul "iot core mqtt client" stellt die verbindung zu einem mqtt broker her und veröffentlicht statusnachrichten unter verschiedenen topics es können mehrere exportinstanzen angelegt werden, jedoch immer nur eine instanz pro broker url nachrichten werden grundsätzlich als string übertragen und sind im regelfall als json objekte formatiert konfiguration im bereich iot export der webkonfiguration oder der bsc remote können die export verbindung angelegt, sowie die parameter konfiguriert werden es werden tcp/ssl sowie web socket (http/https) verbindungen unterstützt die authentifizierung ist per nutzername und passwort oder client zertifikat möglich die entsprechenden zertifikate oder zugangsdaten können während der konfiguration hinterlegt werden es besteht die möglichkeit die basis topics zum veröffentlichen von nachrichten anzupassen parameter parameter standardwert mögliche werte beschreibung user verfügbare benutzer accounts der zu verwendende nutzeraccount beim zugriff auf die daten es ist so möglich den export von geräten oder den zugriff auf kommandos einzuschränken connection mode socket socket websocket auswahl ob eine tcp oder web socket verbindung genutzt wird broker ip oder dns name des brokers ohne protokoll oder port beispiel test mosquitto org der broker zu welchem die verbindung aufgebaut werden soll port 1883 1 65535 der beim verbindungsaufbau zu verwendende port auth user nutzername zur anmeldung am broker auth password passwort zur anmeldung am broker ssl off on trust all off option ob eine verschlüsselte verbindung aufgebaut werden soll mit der option "trust all" ist es möglich allen zertifikaten zu vertrauen ssl server crt im ssl modus wird das server zertifikat verwendet um die verbindung zum broker zu validieren ssl client crt im ssl modus wird das client zertifikat zur validierung des client genutzt ssl client key im ssl modus wird der private client schlüssel zur authentifizierung am broker genutzt ssl client key password im ssl modus wird dieses passwort benutzt um den client schlüssel zu entsperren https hostname verification on on off im ssl modus wird der verwendete hostname im zertifikat des broker explizit überprüft qos 0 0 1 2 der qos wert bestimmt wie nachrichten ausgeliefert werden je höher der qos wert ist, umso größer wird die latenz der nachrichtenauslieferung qos 0 bedeutet, das die nachrichten ohne empfangsbestätigung verschickt werden ein klassisches "fire & forget" qos 1 hingegen versendet die nachricht so lange bis eine bestätigung des empfangs durch den broker erfolgt ist der client kann sicher sein, das der broker die nachricht empfangen hat es ist möglich das eine nachricht mehrfach gesendet oder auch ausgeliefert wird qos 2 verwendet eine doppelte bestätigung um sicherzustellen das eine nachricht nur einmalig ausgeliefert wird hierzu bestätigt der broker dem client den empfang, der client wiederum bestätigt dem broker den empfang der bestätigung somit wissen client und broker beide das die nachricht korrekt und einmalig ausgeliefert wurde durch die verwendung von event ids sowie zeitstempeln in den nachrichten containern, welche von dieser implementierung verwendet werden, ist es möglich mit doppelten nachrichten umzugehen und so die hohen latenzen durch qos 2 zu vermeiden und ähnliche sicherheit mit qos 1 umsetzen grundsätzlich kann auch qos 0 in umgebungen mit stabilen verbindungen genutzt werden retain messages on on off gibt an ob die letzte nachrichten für ein topic auf dem broker zwischengespeichert werden soll andere clients bekommen diese nachrichten dann direkt nach ihrer anmeldung ausgeliefert so kann effektiv der letzte bekannte zustand auf dem broker zwischengespeichert werden timeout (s) 90 0 10 15 30 60 90 120 150 180 300 600 1200 1800 3600 zeit in sekunden welche gewartet wird um eine erfolgreiche verbindung aufzubauen ansonsten wird dies als fehler interpretiert der wert 0 deaktiviert den timeout, es wird so lange gewartet bis die verbindung erfolgreich aufgebaut werden konnte keep alive interval (s) 60 0 10 15 30 60 90 120 150 180 300 600 1200 1800 3600 zeit in sekunden die maximal vergehen darf bis ein datenpaket gesendet werden muss ist kein regulärer datenverkehr innerhalb dieser zeit vorhanden, wird automatisch ein ping versendet der wert 0 deaktiviert diese überwachung max inflight 10000 1 65000 im qos modus 1 und 2 bestimmt dieser wert die maximale anzahl an nachrichten, welche gesendet werden können ohne das eine bestätigung des empfangs eingegangen ist ggf muss dieser wert in sehr großen betriebsumgebungen erhöht werden parameter standardwert mögliche werte beschreibung watchdog timeout disabled disabled 1 min 7 days wenn die verbindung sich für diesen zeitraum in einem fehlerhaften oder nicht verbundenem zustand befindet, wird das system neugestartet refresh all objects after connect disabled enabled disabled falls aktiviert, werden nach jedem erfolgreichen verbindungsaufbau alle objekte synchronisiert nach einem neustart des gerätes werden unabhängig von dieser einstellung, initial alle objekte synchronisiert dto container disabled enabled disabled ist diese option aktiviert, werden die dto objekte in einem iot core datenmodell docid\ aepkicfjmylnpidrbrkrr übertragen send thing descriptions disabled enabled disabled steuerung ob beschreibungen der unterstützten geräte übertragen werden sollen object topics enabled enabled disabled ist diese option aktiviert, werden unterstütze dto objekte in ein weiteres subtopic, welches der objekt id entspricht, gesendet base topic iot/\<hardware id> das basis topic, welches allen weiteren vorangestellt wird client id \<hardware id> die zu verwendende client id topic aufbau die topics sind auf basis des "ressource path" der objekt typen aus dem iot core datenmodell docid\ aepkicfjmylnpidrbrkrr umgesetzt es wird immer das "base topic" vorangestellt ist die option "object topics" eingeschaltet, werden objekt nachrichten jeweils in ein subtopic gesendet das topic setzt sich dann aus "base topic", "ressource path" sowie der objekt id zusammen bei dto objekten ohne id unterstützung wird diese option ignoriert