Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:mervis-scada:80-mqtt [2020/08/27 10:56]
l.osladil [Weintek compatible format]
— (current)
Line 1: Line 1:
-====== MQTT ====== 
  
- 
-===== Basic properties and requirements ===== 
- 
-  * MQTT versions 3.1.0 a and **3.1.1** are supported 
-  * Any device must be registered in the Mervis cloud. Connection parameters are provided upon the registration (**DeviceID**, **user name** and **password**) 
-    * Contact [[en:help:support|]]. 
-  * possibility of a dynamic variable set (devices can specify what variables they publish) 
-  * only built-in types are supported (bool, integers, floating point numbers, string) 
-  * no commands/set point yet 
-  * support for secured channel. A device can use secure or non-secure connection 
- 
-===== General behavior of the clients ===== 
- 
-==== Connect ==== 
- 
-  * ClientID corresponds to the DeviceID 
-  * User name and password 
-  * No special requirements considering flags or keep-alive periods (some reasonable value like 60 seconds are recommended) 
- 
-==== Publish/Subscribe ==== 
- 
-  * Every topic starts with the DeviceId 
-  * The rest of the topic depends on the required functionality 
- 
-===== Supported formats ===== 
- 
-==== Wago compatible format ==== 
- 
-=== Registration of available variables === 
- 
-  * Informs the subscribers of available variables 
-  * Publish message with “At least once delivery” 
-  * Topic: deviceId/TagConfiguration 
-  * Combination of the collection ID and Tag must be unique for every device! 
-  * Payload: UTF-8 JSON document 
-    * /FormatId: (string), message ID 
-    * /ApiVersion(int), version of API 
-    * /Complete (bool), must be true now 
-    * /Collections (Array of collection elements) 
-      * /Id (int), ID of the collection 
-      * /CollectionName (string) 
-      * /SampleRate (int), collection sample rate in ms 
-      * /PublishInterval (int), collection publish interval in ms 
-      * /TagData (Array of variable descriptions) 
-        * /Tag (string), ID of the variable 
-        * /Unit (string), unit of the variable 
-        * /ValueType (string), ST type; only simple types are supported 
- 
-**Example** 
- 
-<code json> 
-{ 
- "FormatId": "TagConfiguration", 
- "ApiVersion": 1, 
- "Complete": true, 
- "Collections": [{ 
- "Id": 1, 
- "CollectionName": "Building 1", 
- "SampleRate": 60000, 
- "PublishInterval": 60000, 
- "TagData": [{ 
- "Tag": "Temperature1", 
- "Unit": "ºC", 
- "ValueType": "real" 
- }, 
- { 
- "Tag": "Humidity", 
- "Unit": "%", 
- "ValueType": "word" 
- }] 
- }, 
- { 
- "Id": 2, 
- "CollectionName": "Building 2", 
- "SampleRate": 120000, 
- "PublishInterval": 240000, 
- "TagData": [{ 
- "Tag": "Water flow", 
- "Unit": "m3/h", 
- "ValueType": "byte" 
- }, 
- { 
- "Tag": "Current phase L1", 
- "Unit": "A", 
- "ValueType": "lreal" 
- }] 
- }] 
-} 
-</code> 
- 
-=== Variable values === 
-  * Publishes values of variables 
-  * Publish message with “At least once delivery” 
-  * Topic: deviceId/TagValues 
-  * Payload: UTF-8 JSON document 
-    * /FormatId: (string), message ID 
-    * /ApiVersion(int), version of API 
-    * /CollectionId (int), identification of the collection 
-    * /TagData (Array of value items) 
-      * /Time (datetime), timestamp in ISO format (YYYY-MM-DDTHH:MM:SSZ), ideal is a UTC form 
-      * /Values (Collection of Tag and value tuples) 
- 
-**Example** 
- 
-<code json> 
-{ 
- "FormatId": "TagValues", 
- "ApiVersion": 1, 
- "CollectionId": 1, 
- "TagData": [{ 
- "Time": "2018-03-27T17:19:23.720+02:00", 
- "Values": { 
- "Temperature1": 15.52, 
- "Humidity": 21 
- } 
- }] 
-} 
- 
-</code> 
-==== Weintek compatible format ==== 
-  * We assume that all datetime values are in **UTC** 
-=== Variable values === 
-  * Publishes values of variables 
-  * Publish message with “At least once delivery” 
-  * Topic: $deviceId/mervis/values or $deviceId/mervis/values/* 
-  * Payload: UTF-8 JSON document 
-    * /d: root element 
-      * "property_name": value - property name, can contain metada(not required). Always use array [...] for value of property 
-        * metadata format: 
-          * "name" name of property 
-          * "type" property type(we supported only [[https://kb.mervis.info/doku.php/en:mervis-scada:80-mqtt#our_supported_types|our list of types]]) 
-          * "unit" information about unit of value 
- 
-**Example** 
- 
-<code json> 
-{ 
-    "d" : { 
-        "name:MyHomeTemperature, type:generic_sint64, unit:°C" : [ 0 ], 
-        "number C" : [ 0 ], 
-        "Bit" : [ false ], 
-        "My array" : [ 0, 10, 20 ] 
-    }, 
-    "ts" : "2020-08-27T07:10:24.360316" 
-} 
- 
-</code> 
-=== Command registration === 
-  * Topic: $deviceId/mervis/cmd_reg or $deviceId/mervis/cmd_reg/* 
-  * Format: 
-    * /d root element 
-      * "propertyName" must include some informations(separate by ","). Value is ignored. 
-        * "id" what is command id and define subscribe topic ($deviceId/mervis/command/change_temperature) 
-        * "name" just for customer info 
-        * "params" parameters with informations to command (**must include all parameters of supscribe topic**) 
-          * "name" parameter name in json 
-          * "type" type of parameter (we supported only [[https://kb.mervis.info/doku.php/en:mervis-scada:80-mqtt#our_supported_types|our list of types]]) 
-          * "unit" information about unit of parameter 
-        * "ts" time span  
-<code> 
-{ 
-    "d" : { 
-        "id:change_temperature, name:change temperature in house ,params:[{name: temperature, type:generic_float64, unit:°C}, {name: date, type:generic_datetime, unit:UTC}]" : false 
-    }, 
-    "ts" : "2020-08-27T07:10:11.356013" 
-} 
-</code> 
-===Our supported types=== 
-            * our types: 
-              * "generic_bool" 
-              * "generic_sint8" 
-              * "generic_uint8" 
-              * "generic_sint16" 
-              * "generic_uint16" 
-              * "generic_sint32" 
-              * "generic_uint32" 
-              * "generic_sint64" 
-              * "generic_uint64" 
-              * "generic_float32" 
-              * "generic_float64" 
-              * "generic_string" 
-              * "generic_datetime" 
-===Create subcribe topic for executing command=== 
-  * for previous command example 
-  * create topic $deviceId/mervis/command/change_temperature 
-  * with two addresses: 
-    * temperature(32-bit float) 
-    * date(string) 
  • © Energocentrum Plus, s.r.o. 2017 - 2024