Difference between revisions of "MQTT-flex"

From wiki.netio-products.com
Jump to navigation Jump to search
(prvni faze porodni)
Line 1: Line 1:
MQTT is implemented as M2M API protocol, where NETIO device is publisher providing output status and subscriber allowing control of NETIO power outputs (power sockets 230V or power outlets
+
MQTT is implemented as M2M API protocol, where NETIO device is publisher providing output status and its measurements and subscriber is allowing to control NETIO power outputs via public or internal MQTT brokers.  
IEC-320 110/230V). With MQTT-flex the users can easily define the MQTT topics and payloads.  
 
  
 +
With MQTT-flex the users can easily define the MQTT topics and payloads by themself via text configuration in JSON object format. Since there is then lot of possibilities with such freestyle flexibility allowed, you can find bellow full set of all implemented attributes and at the end of this article are some examples and links to configurations, which can be used towards public brokers as HiveMQ, IBM Watson, Azure, which you can sometimes directly, sometimes with slight modification (as putting yours Bluemix/Azure credentials) just copy&paste and see data flying between the computers, draw some sexy graphs and have big party with this feature :) ENJOY!
 +
 +
==== requirements: ====
 
PowerCable firmware – 2.1.0 and later
 
PowerCable firmware – 2.1.0 and later
 +
<br />
  
 +
=== Broker section ===
 +
here you have to define address, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required
 +
<br />
  
Config example
+
=== Subscriber section ===
{
 
    "config":{
 
        "broker":{
 
            "url":"broker.hivemq.com",
 
            "protocol":"mqtt",
 
            "port":1883,
 
            "ssl":false,
 
            "type":"generic",
 
            "username":"freedom",
 
            "password":"peace|LOVE|empathy4ALL"
 
        },
 
        "subscribe":[
 
            {
 
                "topic":"netio/${DEVICE_NAME}/output/1/action",
 
                "qos":0,
 
                "target":"OUTPUTS/1/ACTION",
 
                "action":"${payload}"
 
            }
 
        ],
 
        "publish":[
 
            {
 
                "topic":"netio/${DEVICE_NAME}/output/1/state",
 
                "qos":0,
 
                "retain":true,
 
                "payload":"${OUTPUTS/1/STATE}",
 
                "events":[
 
                    {
 
                        "type":"change",
 
                        "source":"OUTPUTS/1/STATE"
 
                    }
 
                ]
 
            },
 
            {
 
                "topic":"netio/${DEVICE_NAME}/output/1/load",
 
                "qos":0,
 
                "retain":false,
 
                "payload":"${OUTPUTS/1/LOAD}",
 
                "events":[
 
                    {
 
                        "type":"timer",
 
                        "period":1111
 
                    },
 
                    {
 
                        "type":"delta",
 
                        "source":"OUTPUTS/1/LOAD",
 
                        "delta":1
 
                    }     
 
                ]
 
            }
 
        ]
 
    }
 
}
 
  
description/details:
+
=== Publish section ===
  
Broker section
 
  
Parameters:
 
 
Item Description Example/values
 
Item Description Example/values
 
url MQTT broker URL broker.hivemq.com (mqtts://broker.your-lovely-domain.com - to connect to SSL capable MQTT broker)
 
url MQTT broker URL broker.hivemq.com (mqtts://broker.your-lovely-domain.com - to connect to SSL capable MQTT broker)
Line 73: Line 25:
 
clientid [optional] MQTT clientid. Max. 32 characters. Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used. myUniqueID1234
 
clientid [optional] MQTT clientid. Max. 32 characters. Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used. myUniqueID1234
 
keepalive [optional] MQTT keep alive period in seconds 90
 
keepalive [optional] MQTT keep alive period in seconds 90
 +
 +
 +
Config example
 +
 +
{  "config":{
 +
<nowiki> </nowiki>      "broker":{
 +
<nowiki> </nowiki>          "url":"broker.hivemq.com",
 +
<nowiki> </nowiki>          "protocol":"mqtt",
 +
<nowiki> </nowiki>          "port":1883,
 +
<nowiki> </nowiki>          "ssl":false,
 +
<nowiki> </nowiki>          "type":"generic",
 +
<nowiki> </nowiki>          "username":"freedom",
 +
<nowiki> </nowiki>          "password":"peace|LOVE|empathy4ALL"
 +
<nowiki> </nowiki>      },
 +
<nowiki> </nowiki>      "subscribe":[
 +
<nowiki> </nowiki>          {
 +
<nowiki> </nowiki>              "topic":"netio/${DEVICE_NAME}/output/1/action",
 +
<nowiki> </nowiki>              "qos":0,
 +
<nowiki> </nowiki>              "target":"OUTPUTS/1/ACTION",
 +
<nowiki> </nowiki>              "action":"${payload}"
 +
<nowiki> </nowiki>          }
 +
<nowiki> </nowiki>      ],
 +
<nowiki> </nowiki>      "publish":[
 +
<nowiki> </nowiki>          {
 +
<nowiki> </nowiki>              "topic":"netio/${DEVICE_NAME}/output/1/state",
 +
<nowiki> </nowiki>              "qos":0,
 +
<nowiki> </nowiki>              "retain":true,
 +
<nowiki> </nowiki>              "payload":"${OUTPUTS/1/STATE}",
 +
<nowiki> </nowiki>              "events":[
 +
<nowiki> </nowiki>                  {
 +
<nowiki> </nowiki>                      "type":"change",
 +
<nowiki> </nowiki>                      "source":"OUTPUTS/1/STATE"
 +
<nowiki> </nowiki>                  }
 +
<nowiki> </nowiki>              ]
 +
<nowiki> </nowiki>          },
 +
<nowiki> </nowiki>          {
 +
<nowiki> </nowiki>              "topic":"netio/${DEVICE_NAME}/output/1/load",
 +
<nowiki> </nowiki>              "qos":0,
 +
<nowiki> </nowiki>              "retain":false,
 +
<nowiki> </nowiki>              "payload":"${OUTPUTS/1/LOAD}",
 +
<nowiki> </nowiki>              "events":[
 +
<nowiki> </nowiki>                  {
 +
<nowiki> </nowiki>                      "type":"timer",
 +
<nowiki> </nowiki>                      "period":1111
 +
<nowiki> </nowiki>                  },
 +
<nowiki> </nowiki>                  {
 +
<nowiki> </nowiki>                      "type":"delta",
 +
<nowiki> </nowiki>                      "source":"OUTPUTS/1/LOAD",
 +
<nowiki> </nowiki>                      "delta":1
 +
<nowiki> </nowiki>                  }     
 +
<nowiki> </nowiki>              ]
 +
<nowiki> </nowiki>          }
 +
<nowiki> </nowiki>      ]
 +
<nowiki> </nowiki>  }}
 +
  
 
Subscribe topic for control of the output:
 
Subscribe topic for control of the output:

Revision as of 10:03, 24 July 2019

MQTT is implemented as M2M API protocol, where NETIO device is publisher providing output status and its measurements and subscriber is allowing to control NETIO power outputs via public or internal MQTT brokers.

With MQTT-flex the users can easily define the MQTT topics and payloads by themself via text configuration in JSON object format. Since there is then lot of possibilities with such freestyle flexibility allowed, you can find bellow full set of all implemented attributes and at the end of this article are some examples and links to configurations, which can be used towards public brokers as HiveMQ, IBM Watson, Azure, which you can sometimes directly, sometimes with slight modification (as putting yours Bluemix/Azure credentials) just copy&paste and see data flying between the computers, draw some sexy graphs and have big party with this feature :) ENJOY!

requirements:

PowerCable firmware – 2.1.0 and later

Broker section

here you have to define address, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required

Subscriber section

Publish section

Item Description Example/values url MQTT broker URL broker.hivemq.com (mqtts://broker.your-lovely-domain.com - to connect to SSL capable MQTT broker) Port MQTT broker port 1883 Ssl SSL security selector [false|true] Type Communication/setup type option [generic] (reserved for future use) username Credentials for MQTT broker - username freedom password Credentials for MQTT broker - password peace|LOVE|empathy4ALL clientid [optional] MQTT clientid. Max. 32 characters. Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used. myUniqueID1234 keepalive [optional] MQTT keep alive period in seconds 90


Config example

{   "config":{
       "broker":{
           "url":"broker.hivemq.com",
           "protocol":"mqtt",
           "port":1883,
           "ssl":false,
           "type":"generic",
           "username":"freedom",
           "password":"peace|LOVE|empathy4ALL"
       },
       "subscribe":[
           {
               "topic":"netio/${DEVICE_NAME}/output/1/action",
               "qos":0,
               "target":"OUTPUTS/1/ACTION",
               "action":"${payload}"
           }
       ],
       "publish":[
           {
               "topic":"netio/${DEVICE_NAME}/output/1/state",
               "qos":0,
               "retain":true,
               "payload":"${OUTPUTS/1/STATE}",
               "events":[
                   {
                       "type":"change",
                       "source":"OUTPUTS/1/STATE"
                   }
               ]
           },
           {
               "topic":"netio/${DEVICE_NAME}/output/1/load",
               "qos":0,
               "retain":false,
               "payload":"${OUTPUTS/1/LOAD}",
               "events":[
                   {
                       "type":"timer",
                       "period":1111
                   },
                   {
                       "type":"delta",
                       "source":"OUTPUTS/1/LOAD",
                       "delta":1
                   }      
               ]
           }
       ]
   }}


Subscribe topic for control of the output:

• netio/<DEVICE_NAME>/output/1/action with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)

Publish topics for monitoring of the output state and load:

• netio/<DEVICE_NAME>/output/1/state with payload providing output 1 state value - published when the output state change • netio/<DEVICE_NAME>/output/1/load with payload providing actual load of output 1 – published every 1111 seconds or when load change by 1W

possible source:

OUTPUTS/X/VOLTAGE", OUTPUTS/X/CURRENT" OUTPUTS/X/POWER_FACTOR .exp = 100, .div = 1}, OUTPUTS/X/LOAD .exp = 1, .div = 1000}, OUTPUTS/X/STATE OUTPUTS/X/ACTION OUTPUTS/X/DELAY &uintValidator, .exp = 1, .div = 1 OUTPUTS/X/NAME OUTPUTS/X/FREQUENCY .exp = 1, .div = 1000}, OUTPUTS/X/ENERGY .exp = 1, .div = 10}, OUTPUTS/X/ENERGY_START OUTPUTS/X/ENERGY_START_FMT OUTPUTS/TOTAL/ENERGY .exp = 1, .div = 10}, OUTPUTS/TOTAL/LOAD .exp = 1, .div = 1000}, OUTPUTS/TOTAL/CURRENT OUTPUTS/TOTAL/VOLTAGE .exp = 1, .div = 100}, OUTPUTS/TOTAL/POWER_FACTOR", .exp = 100, .div = 1}, OUTPUTS/TOTAL/FREQUENCY" .exp = 1, .div = 1000},

available variables:

DEVICE_NAME DEVICE_MAC BRAND_NAME BRAND_TYPE