TbeCbMQTTClient
TbeCbMQTTClient
Eine Komponente für das MQTT Netzwerkprotokoll. Für Codeblock Umgebungen ohne Formular muss der Codeblock persistent ausgeführt werden.
Andernfalls wird das Objekt nach Beendigung des Codeblocks zerstört.
Eigenschaften
Achtung: Die Verbindungs-Eigenschaften müssen eingestellt werden bevor CbActive gesetzt wird.
Eigenschaften | Beschreibung |
---|---|
CbActive:L | Startet den MQTT Client und stellt eine Verbindung zum eingestellten Host her CbProtocol muss gesetzt sein bevor CbActive gesetzt wird! |
CbHost:C | MQTT Server/Broker/AWS IoT Endpoint |
CbPort:N | Port |
CbProtocol:N | bmqttpMQTT bmqttpWebsocket bmqttpAWSIOT - Amazon AWS IoT |
CbTLS:L | TLS ein-/ausschalten |
CbUser:C | Benutzername für Authentifizierung Bemerkung: momentan nicht für AWS IoT |
CbPassword:C | Passwort für Authentifizierung Bemerkung: momentan nicht für AWS IoT |
CbCertPath:C | Nur in Verbindung mit bmqttpAWSIOT Pfad zum |
CbKeyPath:C | Nur in Verbindung mit bmqttpAWSIOT Pfad zum |
CbHeartBeatInterval:N | >0 sendet alle x Sekunden einen Ping an den MQTT Server/Broker |
CbAdvancedHeartbeatInterval:N | >0 sendet asynchron alle x Sekunden einen Ping an den MQTT Broker. Wird auch ausgeführt, wenn komplexe / lange Prozesse im Hauptthread laufen. |
CbCustomAuthentication_Enabled:L | Nur in Verbindung mit bmqttpAWSIOT benutzerdefinierten Authentifizierung aktivieren |
CbCustomAuthentication_Parameters:C | Nur in Verbindung mit bmqttpAWSIOT Abfrageparameter die an den Server übergeben werden |
CbCustomAuthentication_Headers:C | Nur in Verbindung mit bmqttpAWSIOT benutzerdefinierten Header. Werte müssen mit CRLF getrennt sein |
CbCustomAuthentication_UseWebSockets:L | Nur in Verbindung mit bmqttpAWSIOT Verbindung über Websocket oder TCP |
Funktionen und Methoden
Funktion | Parameter | Beschreibung |
---|---|---|
CbPing() | Ping an MQTT Server/Broker senden nicht vorhanden für AWS IoT | |
CbPublish:N() | cTopic:C | sendet eine Nachricht an alle abonnierten Clients
|
CbPublishAndWait:L() | cTopic:C | wie CbPublish() nur wird je QoS Level auf die Bestätigung des Servers über den Empfang der Nachricht gewartet nTimeout in Sekunden wie lange auf die Bestätigung über den Empfang der Nachricht gewartet wird. |
Verfügbare Ereignisse
Ereignis | Parameter | Beschreibung |
---|---|---|
OnException() | aClient:O, aException:O | TCP/IP oder MQTT Fehlern |
OnBeforeConnect() | aClient:O, aCleanSession:Boolean, aClientIdentifier:C | Letzte möglichkeit die Eigenschaften des Klients zu ändern |
OnConnect() | aClient:O, aSession:Boolean, aReasonCode:N, aReasonName:C | Nach dem erforleichen Verbinden |
OnDisconnect() | aClient:O, aReasonCode:N, aReasonName:C | Nach dem erforleichen Trennung |
OnPublish() | aClient:O, aTopic:C, aText:C | Empfang von Botschaften von eigenen oder fremden Klient |
OnPing() | aClient:O | Empfang von Bestätigung eines Ping |
OnSubscribe() | aClient:O, aPacketIdentifier:N | Nach dem erforleichen Anmeldung zumTopic |
OnUnsubscribe() | aClient:O, aPacketIdentifier:N | Nach dem erforleichen Ausmeldung vom Topic |
OnPubAck() | aClient:O, aPacketIdentifier:N, aReasonCode:N, aReasonName:C | Empfang von PUBACK mit nQoS bmqttqsAtLeastOnce |
OnPubRec() | aClient:O, aPacketIdentifier:N, aReasonCode:N, aReasonName:C | Empfang von PUBREC mit nQoS bmqttqsExactlyOnce |
OnPubRel() | aClient:O, aPacketIdentifier:N, aReasonCode:N, aReasonName:C | Empfang von PUBREL mit nQoS bmqttqsExactlyOnce |
OnPubComp() | aClient:O, aPacketIdentifier:N, aReasonCode:N, aReasonName:C | Empfang von PUBCOMP mit nQoS bmqttqsExactlyOnce |
OnAuth() | aClient:O, aReasonCode:N, aReasonName:C | Empfang von Authentifizierungsdaten |
OnSSLVerify() | aClient:O, aAccept:L | Empfang eines Zertifikäts aAccept ist Rückgabe Parameter (um zu weiter zu gehen, muss auf true gesetzt werden) |
Beispiele
Beispiel für globales MQTT-Client in be(as)
My_MQTT_Client:
|lIsResident:P1, gl_MQTT:_U:=nil, oOwner|
function MyClient_OnPublish(Client, Topic, Text)
log('MyClient Publish - ' + Topic + ': ' + Text, llFatal),
end,
function MyClient_OnConnect()
log('MyClient Connect', llFatal),
end,
function MyClient_OnDisconnect()
log('MyClient Disconnect', llFatal),
end,
function MyClient_OnPing()
log('MyClient Ping', llFatal),
end,
if not Empty(gl_MQTT) then
DestroyObject(gl_MQTT),
endif,
if not Empty(lIsResident) and lIsResident then
writeln('Resident'),
oOwner := nil,
else
if LoadedModule <> belmbeas then
lIsResident := True,
SetPersistent(True),
endif,
oOwner := Application,
endif,
gl_MQTT := CreateObject('TbeCbMQTTClient',,oOwner,,true),
gl_MQTT.CbHeartBeatInterval := 600,
gl_MQTT.CbAdvancedHeartBeatInterval := 120,
gl_MQTT.CbHost := "127.0.0.1",
gl_MQTT.CbPort := 1883,
gl_MQTT.CbProtocol := bmqttpMQTT,
gl_MQTT.CbActive := true,
if lIsResident then
AssignEvent(gl_MQTT, 'OnPublish', 'MyClient_OnPublish'),
AssignEvent(gl_MQTT, 'OnConnect', 'MyClient_OnConnect'),
AssignEvent(gl_MQTT, 'OnDisconnect', 'MyClient_OnDisconnect'),
AssignEvent(gl_MQTT, 'OnPing', 'MyClient_OnPing'),
endif,
beas\common\start\beim_start_des_beas:
CallResident('My_MQTT_Client', true),
CallResident() ist für die Ausführung der gesetzten Events wichtig. Wenn das Programm mit CallResident() ausgeführt wird, darf kein Owner zu dem Objekt zugewiesen werden.