Difference between revisions of "Domnev"
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 15: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.