MQTTCBeebotte, MQTT Beebotte-Client

Liste

Diese Seite ist Teil der IEC 61131-3 Programmierhandbuch. Gehen Sie zum Index.

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.

Informationskreis

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.

MQTTCBeebotte-Funktionsbild

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]
War dieser Artikel hilfreich?