Difference between revisions of "Component: MQTT Client (Comms: IoT/Cloud)"
Line 17: | Line 17: | ||
==Component Source Code== | ==Component Source Code== | ||
− | Please click here | + | Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_MQTT_Client.fcfx FC_Comp_Source_MQTT_Client.fcfx] |
==Detailed description== | ==Detailed description== | ||
+ | |||
+ | |||
Line 38: | Line 40: | ||
==Examples== | ==Examples== | ||
+ | |||
+ | |||
Line 112: | Line 116: | ||
==Macro reference== | ==Macro reference== | ||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetTopic''' | ||
+ | |- | ||
+ | | colspan="2" | Get the Topic of the last received (Read) packet. Returns the number of bytes for the Topic | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Topic | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Size | ||
+ | |- | ||
+ | | colspan="2" | Byte count the Topic buffer | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ErrorAsString''' | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Error | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Connect''' | ||
+ | |- | ||
+ | | colspan="2" | Connect to the MQTT Server. Returns the connected state. 0 if not connected, 1 if successful connection, or already connected. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Publish''' | ||
+ | |- | ||
+ | | colspan="2" | Publish data to the server (broker) Returns non-zero if successful | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Topic | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Payload | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''LastError''' | ||
+ | |- | ||
+ | | colspan="2" | Returns the last error | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Read''' | ||
+ | |- | ||
+ | | colspan="2" | Read incoming data. Returns non-zero if packet received. Use GetTopic and GetPayload to read the contents. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Disconnect''' | ||
+ | |- | ||
+ | | colspan="2" | Disconnects from the MQTT server and the network | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Ping''' | ||
+ | |- | ||
+ | | colspan="2" | Ping packet is sent to the Server and checks for a reply. Returns non-zero value if successful | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''GetPayload''' | ||
+ | |- | ||
+ | | colspan="2" | Get the Payload of the last received (Read) packet. Returns the number of bytes for the Payload | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Payload | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Size | ||
+ | |- | ||
+ | | colspan="2" | Byte count the Payload buffer | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Subscribe''' | ||
+ | |- | ||
+ | | colspan="2" | Subscribe to a Topic. Must be Connected first Returns non-zero if successful | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Topic | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Unsubscribe''' | ||
+ | |- | ||
+ | | colspan="2" | Unsubscribe from a Topic. Must be Connected first Returns non-zero if successful | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Topic | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise''' | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Property reference== | ||
+ | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties''' | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]] | ||
+ | | width="90%" | LinkTo | ||
+ | |- | ||
+ | | colspan="2" | | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]] | ||
+ | | width="90%" | Host | ||
+ | |- | ||
+ | | colspan="2" | Address of MQTT Broker Can be an IP Address or URL (URL only supported by some hardware platforms) | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | ||
+ | | width="90%" | Port | ||
+ | |- | ||
+ | | colspan="2" | Port used by MQTT Broker Default 1883 for unencrypted access and 8883 for encrypted access. | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]] | ||
+ | | width="90%" | Client identifier | ||
+ | |- | ||
+ | | colspan="2" | Client identifier (Maximum length 20 characters) Must be unique to the broker. | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | ||
+ | | width="90%" | Network Timeout | ||
+ | |- | ||
+ | | colspan="2" | Maximum time in mS to wait for network responses | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | ||
+ | | width="90%" | Read Timeout | ||
+ | |- | ||
+ | | colspan="2" | Amount of time in ms to wait for incoming messages. | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | ||
+ | | width="90%" | Keep Alive | ||
+ | |- | ||
+ | | colspan="2" | The Keep Alive is the maximum time interval that is permitted to elapse between the point at which the Client finishes transmitting one Control Packet and the point it starts sending the next, measured in seconds. | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]] | ||
+ | | width="90%" | Authentication | ||
+ | |- | ||
+ | | colspan="2" | Selects if the broker is open or if the broker requires a username and password. | ||
+ | |}==Macro reference== | ||
{| class="wikitable" style="width:60%; background-color:#FFFFFF;" | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |
Revision as of 15:16, 20 January 2023
Author | Matrix TSL |
Version | 1.1 |
Category | Comms: IoT/Cloud |
Contents
MQTT Client component
A component providing access to MQTT IoT client. The client can connect to a MQTT server such as ThingSpeak. Allowing IoT type data to be published and read back.
Component Source Code
Please click here to view the component source code (Beta): FC_Comp_Source_MQTT_Client.fcfx
Detailed description
No detailed description exists yet for this component
Examples
The MQTT component requires connection to a Network Comms component via the "Network Component" property, to provide the bridge for simulated TCP/IP communication.
The Network Comms component can then be linked to an embedded TCP/IP component to provide embedded TCP/IP support.
Here is a typical setup for using MQTT on a Raspberry Pi.
Local Weather
A simple example demonstrating how to use MQTT with Flowcode SCADA to get the local weather conditions.
The example shows temperatures from Halifax in the UK and from Sydney in Australia.
Publish
Raspberry Pi
Here we have an embedded Raspberry Pi project connected to an I2C Sensor, the sensor is sampled and the data is published to a MQTT server.
ESP8266 Module
Here we have an embedded project using an ESP8266 wifi module, an analogue input is sampled and the data is published to a MQTT server.
Subscribe
ESP8266 Module
Here we subscribe to a topic and receive it back into Flowcode embedded using an ESP8266 module.
Flowcode App Developer
Here we subscribe to a topic and receive it back into Flowcode App Developer.
Making your own Raspberry Pi based MQTT Broker
Click here for instructions on creating your own Raspberry Pi MQTT Broker.
Macro reference
![]() |
GetTopic |
Get the Topic of the last received (Read) packet. Returns the number of bytes for the Topic | |
![]() |
Topic |
![]() |
Size |
Byte count the Topic buffer | |
![]() |
Return |
![]() |
ErrorAsString |
![]() |
Error |
![]() |
Return |
![]() |
Connect |
Connect to the MQTT Server. Returns the connected state. 0 if not connected, 1 if successful connection, or already connected. | |
![]() |
Return |
![]() |
Publish |
Publish data to the server (broker) Returns non-zero if successful | |
![]() |
Topic |
![]() |
Payload |
![]() |
Return |
![]() |
LastError |
Returns the last error | |
![]() |
Return |
![]() |
Read |
Read incoming data. Returns non-zero if packet received. Use GetTopic and GetPayload to read the contents. | |
![]() |
Return |
![]() |
Disconnect |
Disconnects from the MQTT server and the network | |
![]() |
Return |
![]() |
Ping |
Ping packet is sent to the Server and checks for a reply. Returns non-zero value if successful | |
![]() |
Return |
![]() |
GetPayload |
Get the Payload of the last received (Read) packet. Returns the number of bytes for the Payload | |
![]() |
Payload |
![]() |
Size |
Byte count the Payload buffer | |
![]() |
Return |
![]() |
Subscribe |
Subscribe to a Topic. Must be Connected first Returns non-zero if successful | |
![]() |
Topic |
![]() |
Return |
![]() |
Unsubscribe |
Unsubscribe from a Topic. Must be Connected first Returns non-zero if successful | |
![]() |
Topic |
![]() |
Return |
![]() |
Initialise |
![]() |
Return |
Property reference
==Macro reference==
![]() |
GetTopic |
Get the Topic of the last received (Read) packet. Returns the number of bytes for the Topic | |
![]() |
Topic |
![]() |
Size |
Byte count the Topic buffer | |
![]() |
Return |
![]() |
ErrorAsString |
![]() |
Error |
![]() |
Return |
![]() |
Connect |
Connect to the MQTT Server. Returns the connected state. 0 if not connected, 1 if successful connection, or already connected. | |
![]() |
Return |
![]() |
Publish |
Publish data to the server (broker) Returns non-zero if successful | |
![]() |
Topic |
![]() |
Payload |
![]() |
Return |
![]() |
LastError |
Returns the last error | |
![]() |
Return |
![]() |
Read |
Read incoming data. Returns non-zero if packet received. Use GetTopic and GetPayload to read the contents. | |
![]() |
Return |
![]() |
Disconnect |
Disconnects from the MQTT server and the network | |
![]() |
Return |
![]() |
Ping |
Ping packet is sent to the Server and checks for a reply. Returns non-zero value if successful | |
![]() |
Return |
![]() |
GetPayload |
Get the Payload of the last received (Read) packet. Returns the number of bytes for the Payload | |
![]() |
Payload |
![]() |
Size |
Byte count the Payload buffer | |
![]() |
Return |
![]() |
Subscribe |
Subscribe to a Topic. Must be Connected first Returns non-zero if successful | |
![]() |
Topic |
![]() |
Return |
![]() |
Unsubscribe |
Unsubscribe from a Topic. Must be Connected first Returns non-zero if successful | |
![]() |
Topic |
![]() |
Return |
![]() |
Initialise |
![]() |
Return |