Mit dieser Funktion können Sie Themen auf einem Cloud-Dienst veröffentlichen Beebotte eine Cloud-Plattform für verbundene Objekte in Echtzeit (Artikel), nutzt die Funktion den FB MQTTClient um Daten mit dem MQTT-Protokoll zu versenden.
Funktion
CODESYS: nicht verfügbar
LogikLab: eLLabMQTTLib
Beschreibung
MQTT (@MQTTClient_v3) Die Zuordnungsadresse der FB muss angegeben werden MQTTClient die von der Funktion zur Verwaltung des Protokolls verwendet wird MQTT.
Topic (@STRING) Themennamendefinitionszeichenfolgenzeiger.
DType (VR_TYPE) Zu veröffentlichender Variablentyp.
DBuffer (PVOID) Geben Sie die Adresse der zu veröffentlichenden Variablen an.
QoS (USINT) Veröffentlichungsthema zur Servicequalität. Akzeptierte Werte 0 und 1.
Die Funktion liefert ein (BOOL) FALSE Wenn Ausführungsfehler, TRUE bei korrekter Ausführung.
Beispiele
Verwendung der Beispiele.
In diesem Beispiel werden das Abonnement und die Veröffentlichung für den Service behandelt Beebotte zum Kanal UserTest von zwei Variablen Realvalue e String. Durch das Veröffentlichen eines Wertes ist es möglich, ihn im anzuzeigen Armaturenbrett, und gleichzeitig erhöht der veröffentlichte Wert die abonnierte Variable.
LogicLab (Ptp208, ST_TPBeebotte)
PROGRAM ST_TPBeebotte
VAR
i : UDINT; (* Auxiliary variable *)
Publish : BOOL; (* Publish command *)
TCPClient : SysTCPClient; (* TCP client management *)
FIFO : FIFOFile_v1; (* FIFO on file *)
MQTT : MQTTClient_v3; (* MQTT client FB *)
RxSData : STRING[ 128 ]; (* Rx subscription data *)
SPData : ARRAY[0..1] OF MQTT_TS_DATA; (* MQTT topic subscribe data *)
REALValue : ARRAY[0..1] OF REAL; (* REAL value [Tx][Rx] *)
STRINGValue : ARRAY[0..1] OF STRING[ 32 ]; (* STRING value [Tx][Rx] *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_TPBeebotte"
// *****************************************************************************
// This program subscribes and publish dato to Beebotte service.
// To see the sent data please visit
// https://beebotte.com/dash/74b90ea0-47d2-11e9-8573-fb68fdbc6d81#.Yzw7UkxByCp
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// INITIALIZATION
// -------------------------------------------------------------------------
// Initialize the FBs parameters.
IF (SysFirstLoop) THEN
// Set FIFO parameters.
FIFO.FIFOFilename:=eNULL; //Path and name of FIFO file
FIFO.FIFOSize:=2048; //FIFO file size
FIFO.FIFOIDx:=eNULL; //FIFO indexes
// Set TCPClient parameters.
TCPClient.PeerAdd:=ADR('mqtt.beebotte.com'); //Peer address
TCPClient.PeerPort:=1883; //Peer port
TCPClient.LocalAdd:=ADR('0.0.0.0'); //Local address
TCPClient.LocalPort:=0; //Local port
TCPClient.FlushTm:=0; //Flush time (mS)
TCPClient.LifeTm:=90; //Life time (S)
TCPClient.RxSize:=512; //Rx buffer size
TCPClient.TxSize:=512; //Tx buffer size
// Set MQTTClient parameters.
MQTT.SpyOn:=TRUE; //Spy active
MQTT.FIFOFile:=ADR(FIFO); //FIFO on file
MQTT.Username:=ADR('token_O6vzjmPn1A3lU38w'); //Username
MQTT.Password:=eNULL; //Broker password
MQTT.ClientID:=eNULL; //Client identifier
MQTT.KeepAlive:=T#90s; //Keep alive time
MQTT.Delay:=T#2s; //Send delay time
MQTT.Timeout:=T#5s; //Execution timeout
// Topic subscribe definitions.
MQTT.TSData:=ADR(SPData); //Topic subscribe data
MQTT.TSNumber:=SIZEOF(SPData)/SIZEOF(SPData[0]); //Topic subscribe number
MQTT.TSNumber:=2; //Topic subscribe number
i:=MQTT.Subscribe(0, ADR('UsersTest/REALValue'), ADR(RxSData), SIZEOF(RxSData), 0);
i:=MQTT.Subscribe(1, ADR('UsersTest/STRINGValue'), ADR(RxSData), SIZEOF(RxSData), 0);
END_IF;
// -------------------------------------------------------------------------
// BEEBOTTE SUBSSCRIBE AND PUBLISH
// -------------------------------------------------------------------------
// FBs management.
TCPClient(Connect:=MQTT.Connect); //TCPClient management
MQTT(Enable:=TRUE, File:=TCPClient.File); //MQTTClient management
// Manage received subscriptions, is received a JSON string as below:
// {"data":123456,"ispublic":true,"ts":1560781762147}
IF (SPData[0].Status.0) THEN
i:=JSONDecoder(ADR(RxSData), ADR('data'), REAL_TYPE, ADR(REALValue[1]), 1, SIZEOF(REALValue[1]));
END_IF;
IF (SPData[1].Status.0) THEN
i:=JSONDecoder(ADR(RxSData), ADR('data'), STRING_TYPE, ADR(STRINGValue[1]), 1, 32);
END_IF;
// To publish topics set by debug the "Publish" variable.
IF NOT(Publish) THEN RETURN; END_IF;
Publish:=FALSE; //Publish command
i:=MQTTCBeebotte(ADR(MQTT), ADR('UsersTest/REALValue'), REAL_TYPE, ADR(REALValue[0]), 0);
i:=MQTTCBeebotte(ADR(MQTT), ADR('UsersTest/STRINGValue'), STRING_TYPE, ADR(STRINGValue[0]), 0);
// [End of file]