AzureMQTTClient (FB)

FUNCTION_BLOCK AzureMQTTClient

Function block to connect to Azure IoT Hub via MQTT.

InOut:

Scope

Name

Type

Initial

Comment

Input

xEnable

BOOL

TRUE: Opens a connection, FALSE: Close connection

uiKeepAlive

UINT

10

Keep alive interval in seconds (default: 10s)

tPingInterval

TIME

TIME#2s0ms

Ping interval (default: 2s)

udiTimeOut

UDINT

0

Defines the time (µs) after which the connection setup aborts with xError.

tReconnectTime

TIME

TIME#0ms

Time for an automatically reconnection, default is T#0s and reconnection is not acitve.

sHubDomainName

STRING(255)

Domain name of the IoT Hub

sDeviceId

STRING(255)

Device ID

wsSaS

WSTRING(255)

Shared Access Signature (SAS Token)

pbWillMessage

POINTER TO BYTE

0

Pointer to the ‘Last Will’ message (optional)

uiWillMessageSize

UINT

0

Size of ‘Last Will’ message (optional)

itfTLSContext

NBS.ITLSContext

0

Encapsulates all the data neccecray to handle encrypted tcp connections

Static initialization, as shown in the following code snippet.

VAR
    commonName : STRING := 'MyRrasPi';
    ciCertInfo : NBS.CERT_INFO := (psInfo:=ADR(commonName), udiSize:=LEN(commonName));
    myTLSContext : NBS.TLSContext := (
        ePurpose:=NBS.PURPOSE.CLIENT_SIDE,
        sUseCaseName:='NBSTest',
        sTLSVersion:='1.3',
        ciCertInfo:=ciCertInfo,
        udiVerificationMode:=2
    );
END_VAR

itfAsyncProperty

NBS.IAsyncProperty

0

Runs the connect process in a own background task. Use this property if the connection setup takes longer than one task cycle (e.g. TLS connections)

eCommunicationMode

COMMUNICATION_MODE

COMMUNICATION_MODE.TCP

Communication mode: TCP or WEB_SOCKET, default: TCP

httpProxySettings

REFERENCE TO HttpProxySettings

Optional http proxy settings. Only relevant for COMMUNICATION_MODE.WEB_SOCKET.

Output

xError

BOOL

TRUE, if an error occurred

xBusy

BOOL

TRUE, while the function block is active

eError

MQTT.MQTT_ERROR

The error id

xConnectedToBroker

BOOL

FALSE

FALSE when there is no connection to Azure IoT Hub, otherwise TRUE