Domnev: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
__TOC__ | __TOC__ | ||
==Summary== | ==Summary== | ||
In this guide, | In this guide, the MQTT Serial Gateway function will be configured using third-party MQTT Broker services (in this example, ''Flespi.io''). | ||
==Configuration overview & prerequisites== | ==Configuration overview & prerequisites== | ||
*Two | *Two devices with serials ports - one acts as Modbus RTU Master, another as Modbus RTU Slave; | ||
*Flespi.io account to act as an MQTT Broker/Publisher/Subscriber (for first configuration example) | *Flespi.io account to act as an MQTT Broker/Publisher/Subscriber (for first configuration example); | ||
==Configuration using flespi.io as MQTT Broker== | ==Configuration using flespi.io as MQTT Broker== | ||
[[File: | [[File:MQTT Serial gateway topology.png|border|center|class=tlt-border|847x279px]] | ||
===Configuring RUT955 MQTT Gateway=== | ===Configuring RUT955 MQTT Gateway=== | ||
Line 22: | Line 20: | ||
# '''Enter Password'''. | # '''Enter Password'''. | ||
[[File:MQTT Gateway config.png|border|center|class=tlt-border| | [[File:MQTT Gateway config.png|border|center|class=tlt-border|862 × 412px]] | ||
'''Note''': ''Everything else can be left as default or changed according to your needs.'' | '''Note''': ''Everything else can be left as default or changed according to your needs.'' | ||
Line 29: | Line 27: | ||
---- | ---- | ||
Under the MQTT Gateway configuration, create the Serial Gateway: | Under the MQTT Gateway configuration, create the Serial Gateway: | ||
# Enter the desired device ID; | # Enter the '''desired device ID'''; | ||
# Select the desired serial interface. | # Select the '''desired serial interface'''. | ||
[[File:Serial gateway config.png|border|center|class=tlt-border| | [[File:Serial gateway config.png|border|center|class=tlt-border|868×308px]] | ||
===Configuring Flespi.io MQTT Broker=== | ===Configuring Flespi.io MQTT Broker=== | ||
---- | ---- | ||
'''Log in''' or '''create an account''' on '''https://flespi.io'''; | '''Log in''' or '''create an account''' on '''https://flespi.io'''; | ||
#Navigate to '''MQTT Board''' on the '''left side''' menu; | #Navigate to '''MQTT Board''' on the '''left side''' menu; | ||
#On the right-hand panel, top right corner, next to the name of the MQTT board, press the cogwheel-looking icon to open ''Connection Settings''; | #On the right-hand panel, top right corner, next to the name of the MQTT board, '''press the cogwheel-looking icon''' to open ''Connection Settings''; | ||
#In the opened window, press "Get flespi token" to generate a username; | #In the opened window, press '''"Get flespi token"''' to generate a username; | ||
#Enter the Client name; | #Enter the '''Client name'''; | ||
#Copy the Host address; | #Copy the Host address; | ||
#Copy Username; | #Copy '''Username'''; | ||
#Create a password. | #Create a '''password'''. | ||
Once done, save all the changes | Once done, save all the changes. | ||
[[File:Flespi board.png|border|center|class=tlt-border|1102x729px]] | [[File:Flespi board.png|border|center|class=tlt-border|1102x729px]] | ||
===Message format for MQTT publisher=== | ===Message format for MQTT publisher=== | ||
---- | ---- | ||
Modbus request data sent in the MQTT payload should be generated in accordance with the following format: | |||
<pre>1 <COOKIE> <SERIAL_DEVICE_ID> <TIMEOUT> <SLAVE_ID> <MODBUS_FUNCTION> <FIRST_REGISTER> <REGISTER_COUNT/VALUES> </pre> | |||
The table below explains what each option means: | |||
{| class="wikitable" | {| class="wikitable" | ||
|1. Format version | |1. Format version | ||
Line 97: | Line 96: | ||
<li><b>15</b> - <u>coil count</u> (in range [1..1968]); must not exceed the boundary (first coil number + coil count <= 65537); and <u>coil values</u> separated with commas, without spaces (e.g., <i>1,2,3,654,21,789</i>); there must be exactly as many values as specified (with coil count); each value must be in the range of [0..1]. | <li><b>15</b> - <u>coil count</u> (in range [1..1968]); must not exceed the boundary (first coil number + coil count <= 65537); and <u>coil values</u> separated with commas, without spaces (e.g., <i>1,2,3,654,21,789</i>); there must be exactly as many values as specified (with coil count); each value must be in the range of [0..1]. | ||
|} | |} | ||
====Examples==== | ====Examples==== | ||
---- | ---- | ||
{| class="wikitable" | {| class="wikitable" | ||
|Setting relay (on) (Relay address is 202, which means 'Number of first register will be 203) | |Setting relay (on) (Relay address is 202, which means 'Number of first register will be 203) | ||
|''' | |'''1 1 1 1 1 6 203 1''' | ||
|- | |- | ||
|Getting | |Getting temperature | ||
|''' | |'''1 1 1 1 1 3 6 2''' | ||
|} | |} | ||
===Testing MQTT Publisher and Subscriber on flespi.io=== | ===Testing MQTT Publisher and Subscriber on flespi.io=== | ||
---- | ---- | ||
====Adding Flespi Subscriber==== | |||
---- | |||
To test the Modbus Serial Gateway functionality, '''log into''' your '''Flespi account''' → '''MQTT Board''' and '''add a Subscriber''': | |||
#Press '''''<nowiki/>'+'''''' button on the top right corner | #Press '''''<nowiki/>'+'''''' button on the top right corner | ||
Line 124: | Line 116: | ||
#Press '''''<nowiki/>'Subscribe'''''' button | #Press '''''<nowiki/>'Subscribe'''''' button | ||
[[File: | [[File:Flespi subscriber.png|border|class=tlt-border|496x204px]] [[File:Flespi subscriber setup.png|border|class=tlt-border|496x205px]] | ||
====Adding Flespi Subscriber==== | |||
---- | |||
Also, you will need to '''add a Publisher''': | |||
#Press '''''<nowiki/>'+'''''' button on the top right corner | #Press '''''<nowiki/>'+'''''' button on the top right corner | ||
#Select '''''<nowiki/>'Publisher'''''' | #Select '''''<nowiki/>'Publisher'''''' | ||
# In the topic field enter '''''<nowiki/>'request'''''' | #In the topic field enter '''''<nowiki/>'request'''''' | ||
#In the message field enter message, for this example '''''<nowiki/>'Getting | #In the message field enter message, for this example '''''<nowiki/>'Getting temperature'''''' is used | ||
#Press '''''<nowiki/>'Publish'''''' button | #Press '''''<nowiki/>'Publish'''''' button | ||
[[File: | [[File:Flespi publisher.png|border|class=tlt-border|495x238px]] [[File:Flespi publisher setup.png|border|class=tlt-border|494x239px]] | ||
====Flespi Subscriber output==== | |||
---- | |||
Check the response in the '''''<nowiki/>'Subscriber'''''' tab, you should receive a message similar to the one below. | Check the response in the '''''<nowiki/>'Subscriber'''''' tab, you should receive a message similar to the one below. | ||
[[File: | [[File:Flespi response.png|border|center|class=tlt-border|500x305px]] | ||
In the output, we can see that router's '''temperature''' is '''44 degrees Celsius'''. | |||
==See Also== | ==See Also== | ||
*[[Modbus Master RutOS configuration example]] | *[[Modbus Master RutOS configuration example]] | ||
*[[ | *[[RUT955_Modbus#MQTT_Gateway|MQTT Gateway]] | ||
==External links== | |||
[https://flespi.io/#/ Flespi.io] |
Revision as of 14:34, 20 April 2023
The information on this page is updated in accordance with the 00.07.4 firmware version .
Summary
In this guide, the MQTT Serial Gateway function will be configured using third-party MQTT Broker services (in this example, Flespi.io).
Configuration overview & prerequisites
- Two devices with serials ports - one acts as Modbus RTU Master, another as Modbus RTU Slave;
- Flespi.io account to act as an MQTT Broker/Publisher/Subscriber (for first configuration example);
Configuration using flespi.io as MQTT Broker
Configuring RUT955 MQTT Gateway
Go to Services → Modbus → MQTT Gateway and there:
- Enable the instance;
- Enter Host (copied from flespi connection settings without 'wss://' and port);
- Enter Username (Copied from flespi Connection settings generated token);
- Enter Password.
Note: Everything else can be left as default or changed according to your needs.
Configuring RUT955 Serial Gateway
Under the MQTT Gateway configuration, create the Serial Gateway:
- Enter the desired device ID;
- Select the desired serial interface.
Configuring Flespi.io MQTT Broker
Log in or create an account on https://flespi.io;
- Navigate to MQTT Board on the left side menu;
- On the right-hand panel, top right corner, next to the name of the MQTT board, press the cogwheel-looking icon to open Connection Settings;
- In the opened window, press "Get flespi token" to generate a username;
- Enter the Client name;
- Copy the Host address;
- Copy Username;
- Create a password.
Once done, save all the changes.
Message format for MQTT publisher
Modbus request data sent in the MQTT payload should be generated in accordance with the following format:
1 <COOKIE> <SERIAL_DEVICE_ID> <TIMEOUT> <SLAVE_ID> <MODBUS_FUNCTION> <FIRST_REGISTER> <REGISTER_COUNT/VALUES>
The table below explains what each option means:
1. Format version | 1 |
2. Cookie | from 0 to 264 -1 |
3. Serial device ID | a string used to identify a serial device. Must match with Device ID field in MQTT Gateway page Serial gateway configuration section |
4. Timeout | timeout for Modbus connection, in seconds. Range [1..999]. |
5. Slave ID | Indicates to which slave request is sent |
6. Modbus function | Modbus task type that will be executed. Possible values are:
|
7. First register | number (not address) of the first register/coil/input (in range [1..65536]) from which the registers/coils/inputs will be read/written to. |
8. Registry count |
Examples
Setting relay (on) (Relay address is 202, which means 'Number of first register will be 203) | 1 1 1 1 1 6 203 1 |
Getting temperature | 1 1 1 1 1 3 6 2 |
Testing MQTT Publisher and Subscriber on flespi.io
Adding Flespi Subscriber
To test the Modbus Serial Gateway functionality, log into your Flespi account → MQTT Board and add a Subscriber:
- Press '+' button on the top right corner
- Select 'Subscriber'
- In the topic field enter 'response'
- Press 'Subscribe' button
Adding Flespi Subscriber
Also, you will need to add a Publisher:
- Press '+' button on the top right corner
- Select 'Publisher'
- In the topic field enter 'request'
- In the message field enter message, for this example 'Getting temperature' is used
- Press 'Publish' button
Flespi Subscriber output
Check the response in the 'Subscriber' tab, you should receive a message similar to the one below.
In the output, we can see that router's temperature is 44 degrees Celsius.