MQTTCBeebotte, cliente MQTT Beebotte

Lista

Esta página es parte del Manual de programación IEC 61131-3. Ir al índice.

Esta función le permite publicar temas en un servicio en la nube. Beebotte Una plataforma en la nube para objetos conectados en tiempo real (Artículo), la función utiliza el FB MQTTClient para enviar datos con el protocolo MQTT.

Círculo de información

Funzione

CÓDIGOS: indisponible

Laboratorio lógico: eLLabMQTTLib

Descripción

MQTT (@MQTTClient_v3) Debe indicarse la dirección de asignación del FB MQTTClient que será utilizado por la función para gestionar el protocolo MQTT.
Topic (@STRING) Puntero de cadena de definición de nombre de tema.
DType (VR_TYPE) Tipo de variable a publicar.
DBuffer (PVOID) Indicar dirección de la variable a publicar.
QoS (USINT) Tema de publicación Calidad de servicio. Valores aceptados 0 y 1.

La función devuelve un (BOOL) FALSE si error de ejecución, TRUE si la ejecución es correcta.

Imagen de la función MQTTCBeebotte

Ejemplos

Cómo utilizar los ejemplos..
Este ejemplo maneja la suscripción y publicación al servicio. Beebotte al canal Prueba de usuario de dos variables RealValue e StringValue. Al publicar un valor será posible mostrarlo en el página de información de sus operaciones, y al mismo tiempo el valor publicado potenciará la variable suscrita.

Laboratorio Lógico (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]
¿Le resultó útil este artículo?