<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.netio-products.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tbezstarosta</id>
	<title>wiki.netio-products.com - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.netio-products.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tbezstarosta"/>
	<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Special:Contributions/Tbezstarosta"/>
	<updated>2026-04-28T11:10:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1090</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1090"/>
		<updated>2026-03-17T15:06:29Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* HUMIDITY */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
*In case of a disconnected sensor or a malfunction, the return value is 999&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
*In case of a disconnected sensor or a malfunction, the return value is 999&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1089</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1089"/>
		<updated>2026-03-17T15:06:20Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
*In case of a disconnected sensor or a malfunction, the return value is 999&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1088</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1088"/>
		<updated>2026-03-17T15:06:03Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
In case of a disconnected sensor or a malfunction, the return value is 999&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1087</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1087"/>
		<updated>2026-03-17T15:05:54Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
* In case of a disconnected sensor or a malfunction, the return value is 999&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1086</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1086"/>
		<updated>2026-03-17T15:05:30Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
* In case of a disconnected sensor or a malfunction, the return value is &amp;lt;strong&amp;gt;999&amp;lt;strong&amp;gt; *&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1085</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1085"/>
		<updated>2026-03-17T15:03:36Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
** In case of a disconnected sensor or a malfunction, the return value is 999 **&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1084</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1084"/>
		<updated>2026-03-17T14:58:31Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* Examples: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
getting temperature [C] - sensor connected of input 1&lt;br /&gt;
 INPUTS/1/TEMP&lt;br /&gt;
getting temperature [F] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/TEMPF&lt;br /&gt;
getting humidity [%] - sensor connected of input 2&lt;br /&gt;
 INPUTS/2/HUMIDITY&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1083</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1083"/>
		<updated>2026-03-17T14:56:19Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* HUMIDITY */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement &lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [%]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1082</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1082"/>
		<updated>2026-03-17T14:55:59Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
Unit: &amp;lt;code&amp;gt; [C], [F] &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement in[%]&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1081</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1081"/>
		<updated>2026-03-17T14:55:18Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* TEMPERATURE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement in[%]&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1080</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1080"/>
		<updated>2026-03-17T14:54:57Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* INPUT variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MQTT-flex version of the MQTT protocol can be configured in detail thanks to the “flex” extension.&lt;br /&gt;
&lt;br /&gt;
https://www.netio-products.com/en/glossary/mqtt-flex &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Why MQTT-flex&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
There is a lot of approaches in integration of MQTT in devices and systems. One vendor prefer one topic with structured data payload, the another one prefer tree topic structure with simple value in data payload. MQTT-flex is a standard [https://en.wikipedia.org/wiki/MQTT MQTT] with specific configuration approach. The goal of MQTT-flex is to give a user opportunity to integrate NETIO device with any system with different data approach.&lt;br /&gt;
&lt;br /&gt;
Configuration of MQTT in devices supporting &amp;lt;i&amp;gt;MQTT flex&amp;lt;/i&amp;gt; is done by [https://en.wikipedia.org/wiki/JSON JSON (JavaScript Object Notation)]. With MQTT-flex you can easily define the MQTT topics, payloads and device behaviour 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.&lt;br /&gt;
&lt;br /&gt;
===Supported devices:===&lt;br /&gt;
* PowerCable MQTT 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerCable REST 101x &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4PS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 4KS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerPDU 8QS &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerDIN 4PZ &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 3Px &amp;lt;br&amp;gt;&lt;br /&gt;
* PowerBOX 4Kx &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;FW version:&amp;lt;/b&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;2.2.1&lt;br /&gt;
&lt;br /&gt;
===Not supported NETIO devices:===&lt;br /&gt;
* PowerPDU 4C &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4 &amp;lt;br&amp;gt;&lt;br /&gt;
* NETIO 4All &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Simple MQTT-flex configuration + explanation =&lt;br /&gt;
&lt;br /&gt;
''We strongly recommend to create and test MQTT-flex configuration on &amp;quot;local&amp;quot; device what can be easily restarted. The validation of config before saving is not 100% and for example some specific typos can cause a freeze of a device - the solution is to restart a device (unplug/plug input power cable). If the configuration is saved and device is working then there are no known failure case so it is safe to use this configuration on the &amp;quot;remote&amp;quot; devices.''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
      &amp;quot;config&amp;quot;:{&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
=== Client Configuration (broker section) ===&lt;br /&gt;
Put here MQTT client connection setup&lt;br /&gt;
&lt;br /&gt;
This configuration example set NETIO device to connect to &amp;lt;b&amp;gt;broker.hivemq.com&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;mqtt&amp;lt;/b&amp;gt; protocol, &amp;lt;b&amp;gt;no ssl&amp;lt;/b&amp;gt; connection with credetials &amp;lt;b&amp;gt;freedom/peace|love|empathy4ALL&amp;lt;/b&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;broker&amp;quot;:{&lt;br /&gt;
             &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
             &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
             &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
             &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
             &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;,&lt;br /&gt;
             &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
&lt;br /&gt;
=== Device Control (subscribe section) ===&lt;br /&gt;
Put here array of topics where to subscribe&lt;br /&gt;
&lt;br /&gt;
Device &amp;lt;b&amp;gt;output 1&amp;lt;/b&amp;gt; is controlled with &amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; received by subscription to &amp;lt;b&amp;gt;netio/${DEVICE_NAME}/output/1/action&amp;lt;/b&amp;gt; topic with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
         &amp;quot;subscribe&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
                &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ],&lt;br /&gt;
&lt;br /&gt;
=== Output State monitoring (publish section) ===&lt;br /&gt;
Put here array of topics where to publish.&lt;br /&gt;
&lt;br /&gt;
Device send every &amp;lt;b&amp;gt;1000 s&amp;lt;/b&amp;gt; message to topic &amp;lt;b&amp;gt;&amp;lt;/b&amp;gt; with &amp;lt;b&amp;gt;QOS 0&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;retain true&amp;lt;/b&amp;gt; information with &amp;lt;b&amp;gt;output 1 state&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;publish&amp;quot;:[{&lt;br /&gt;
                &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
                &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
                &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
                &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
                &amp;quot;events&amp;quot;:[&lt;br /&gt;
                    {&lt;br /&gt;
                        &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                        &amp;quot;period&amp;quot;:&amp;quot;1000&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
&lt;br /&gt;
= Config sections =&lt;br /&gt;
&lt;br /&gt;
== Broker ==&lt;br /&gt;
here you have to define URL or IP address of machine hosting MQTT broker, level of security used for protocol, auth data and optionally some specific MQTT attributes, which are in the spec, but not mandatory required&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | url&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker URL&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT broker port&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;port&amp;quot;:1883&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | protocol spec - mqtt&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | ssl&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | true, false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Use SSL crypted communication selector&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;ssl&amp;quot;:false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | generic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Communication/setup type option&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | username&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 128 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;username&amp;quot;:&amp;quot;freedom&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | password&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | Credentials for MQTT broker. Max. 256 characters (since FW 3.2.4).&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;password&amp;quot;:&amp;quot;peace|LOVE|empathy4ALL&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | clientid&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | regexp+len&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT clientid. Max. 128 characters (since FW 3.2.4). Variables ${DEVICE_MAC} or ${DEVICE_NAME} can be used&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;clientid&amp;quot;:&amp;quot;myEcoTable01&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | keepalive&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 1 - 65535&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT keep alive period in seconds&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;keepalive&amp;quot;:90&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note 1: &amp;lt;b&amp;gt;clientid&amp;lt;/b&amp;gt; attribute is &amp;lt;b&amp;gt;mandatory for MQTT(s)&amp;lt;/b&amp;gt; communication. When not configured, random ID will be generated.&lt;br /&gt;
&lt;br /&gt;
Note 2: To proper communication with MS Azure - it is necessary to set up IoT Hub to use TLS 1.2&lt;br /&gt;
&lt;br /&gt;
See section &amp;quot;TLS 1.2 enforcement available in select regions&amp;quot; in following guidelines https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-tls-support&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Standard setup ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Security (SSL / TLS) secured setup ====&lt;br /&gt;
You can enable MQTTs by using the encrypted port &amp;lt;b&amp;gt;8883&amp;lt;/b&amp;gt; + &amp;lt;b&amp;gt;&amp;quot;ssl&amp;quot;:true&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Variables used setup ====&lt;br /&gt;
&lt;br /&gt;
== Subscribe ==&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When receive message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;: When message in &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; match &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;actiondef payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; do &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;action&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; on &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;target&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | specification of the topic, which MQTT-flex device listens from broker and act accordingly. Max. 128 characters. The &amp;quot;#&amp;quot; can be used since FW 3.2.4 - see note under this table.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | 0, 1 or 2&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;qos&amp;quot;:0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | target&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | internal definition of action, which can be performed above the specified output&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | action&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | a payload or a value the action attribute needs to have passed to&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | actiondef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | json&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | optional&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: The &amp;quot;#&amp;quot; wildcard can be used in subscribe topic definition. The multi-level wildcard character MUST be specified either on its own or following a topic level separator. In either case it MUST be the last character specified in the Topic.&lt;br /&gt;
&lt;br /&gt;
For example, if a Device subscribes to “devices/{device_id}/messages/devicebound/#”, it would receive messages published using these topic names:&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/”&lt;br /&gt;
&lt;br /&gt;
“devices/{device_id}/messages/devicebound/{property_bag}”&lt;br /&gt;
&lt;br /&gt;
This should be usefull for use with MS Azure - IoT hub.&lt;br /&gt;
&lt;br /&gt;
=== MQTT Subscribe as event to trigger action &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This feature allow to subscribe to specific MQTT topic and pass payload to Rules or MQTT-flex as event.&lt;br /&gt;
&lt;br /&gt;
target: &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;subscribe&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;action&amp;quot;: &amp;quot;${payload}&amp;quot;,&lt;br /&gt;
    &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;target&amp;quot;: &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
    &amp;quot;topic&amp;quot;: &amp;quot;broker/12345/MQTT_EVENT/&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Toggle output with standard payload ==== &lt;br /&gt;
==== Toggle output with custom payload ==== &lt;br /&gt;
==== Subscribe to more than one topic ====&lt;br /&gt;
==== Trigger Rule and MQTT publish from MQTT subscribe &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; ====&lt;br /&gt;
This example show Request response implementation in MQTT and toggle action made by Rules.&lt;br /&gt;
&lt;br /&gt;
When message with payload &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt; is published to topic &amp;lt;code&amp;gt;broker/gv90018g/COMMAND&amp;lt;/code&amp;gt; MQTT flex will create an event with name &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; (fixed name cannot be changed) and value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. On this event will act all events and conditions set in MQTT-flex and Rules which are set to listening to change on &amp;lt;code&amp;gt;PROTOCOLS/MQTT/EVENT&amp;lt;/code&amp;gt; and equals to value &amp;lt;code&amp;gt;getValues&amp;lt;/code&amp;gt;. See &amp;lt;b&amp;gt;bold&amp;lt;/b&amp;gt; marked parameters in example configuration below. &lt;br /&gt;
&lt;br /&gt;
Once the triggered action is done it is needed to reset MQTT channel to &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; status becaus event are reacting only to change. If the channel is not reset the next even would not be triggered.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Rules Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;lt;b&amp;gt;&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MQTT Configuration:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;broker&amp;quot;:{&lt;br /&gt;
    &amp;quot;clientid&amp;quot;:&amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
    &amp;quot;keepalive&amp;quot;:30,&lt;br /&gt;
    &amp;quot;password&amp;quot;:&amp;quot;abcdefghijk&amp;quot;,&lt;br /&gt;
    &amp;quot;port&amp;quot;:8883,&lt;br /&gt;
    &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
    &amp;quot;ssl&amp;quot;:true,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
    &amp;quot;url&amp;quot;:&amp;quot;broker.cloud.netio.eu&amp;quot;,&lt;br /&gt;
    &amp;quot;username&amp;quot;:&amp;quot;gv90018g&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;groupEvents&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
          &amp;quot;events&amp;quot;:[&lt;br /&gt;
              {&lt;br /&gt;
             &amp;lt;b&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&lt;br /&gt;
             &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
             &amp;quot;value&amp;quot;:&amp;quot;getValues&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;lt;b&amp;gt;&amp;quot;broker/gv90018g/COMMAND&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;publish&amp;quot;:[&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;,&lt;br /&gt;
       &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
       &amp;lt;b&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;&amp;lt;/b&amp;gt;,&lt;br /&gt;
       &amp;quot;topic&amp;quot;:&amp;quot;broker/gv90018g/COMMAND&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Subscribe topic payload values specification for control of the output:&lt;br /&gt;
&lt;br /&gt;
netio/&amp;lt;DEVICE_NAME&amp;gt;/output/1/&amp;lt;b&amp;gt;action&amp;lt;/b&amp;gt; with payload for output control : (0 – off, 1 – on, 2 – short off, 3 – short on, 4 – toggle, 5 – no change)&lt;br /&gt;
&lt;br /&gt;
== Publish ==&lt;br /&gt;
&lt;br /&gt;
when you need to send some data from device towards the broker, you have to specify it in the publish section - you can send measurement data as they are implemented, or you can use translation tables to send some pre-defined strings or even send JSON object. these attributes can be send periodicaly every time the timer reached specified value in seconds or based on value change (something like delta principle, but using only value differrence within defined period)&lt;br /&gt;
&lt;br /&gt;
=== Hints to usage ===&lt;br /&gt;
When &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;event&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; send message with &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;payload&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;topic&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Attributes table overview ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Item&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Presence&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Possible Values&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | Description&lt;br /&gt;
! style=&amp;quot;font-weight:bold; background-color:#9b9b9b;&amp;quot; | JSON Config Usage&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | topic&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the topic, how it is registered towards MQTT broker. Max. 128 characters. &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | qos&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's Quality of Sevice - definition {here|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180912}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | retain&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | boolean: true or false&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | MQTT's attribute to specify to broker how to store last received information - section 3.3.1.3 of {MQTT doc|http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/errata01/os/mqtt-v3.1.1-errata01-os-complete.html#_Toc442180841}&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;retain&amp;quot;:true&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payload&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of the payload, what is send to the MQTT broker.&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | events&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | mandatory&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | see table below&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | definition of events used for triggering sending of data via mqtt (change, delta, timer)&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | type&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | source&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | delta&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | period&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | payloaddef&amp;lt;sup&amp;gt;Not supported yet&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; | &lt;br /&gt;
| style=&amp;quot;background-color:#efefef;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
==== Publish energy periodically (event timer) ==== &lt;br /&gt;
==== Publish current on change (delta) ==== &lt;br /&gt;
==== Publish output state ====&lt;br /&gt;
==== Publish to more than one topic with different events ====&lt;br /&gt;
&lt;br /&gt;
= Target / Source =&lt;br /&gt;
In MQTT-flex we use targets and sources specify where to apply some change or get value. Practically it means addressing of INPUTS/OUTPUTS and adding command or variable.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;source&amp;lt;/b&amp;gt; - specifies from where the value will be read (specifies the source of data for payload, change detection, delta calculation)&lt;br /&gt;
* &amp;lt;b&amp;gt;target&amp;lt;/b&amp;gt; - specifies where the data should be sent or command applied (e.g. specifies the target for ACTION)&lt;br /&gt;
&lt;br /&gt;
=== INPUT / OUTPUT (Target) selection ===&lt;br /&gt;
&lt;br /&gt;
NETIO Devices can have inputs and outputs which can be different type. When you want to work with some variable you have to specify on which I/O. For doing that in MQTT-flex is implemented structured addressing with &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator. See the steps below how to compose source or target.&lt;br /&gt;
&lt;br /&gt;
# At first specify if requested variable is from/for INPUT or OUTPUT using keywords &amp;lt;b&amp;gt;&amp;quot;OUTPUTS&amp;quot;&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;quot;INPUTS&amp;quot;&amp;lt;/b&amp;gt; .&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify the number of INPUT/OUTPUT to &amp;lt;b&amp;gt;1&amp;lt;/b&amp;gt;(or TOTAL for summary statistics if available)&lt;br /&gt;
# Add &amp;lt;b&amp;gt;&amp;quot;/&amp;quot;&amp;lt;/b&amp;gt; separator&lt;br /&gt;
# Specify requested variable or command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Not all of OUTPUTS/INPUTS support all variables. Available variables are closely connected with the device functions and I/O features.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note2:&amp;lt;/b&amp;gt; INPUTS available only on NETIO PowerDIN 4PZ&lt;br /&gt;
&lt;br /&gt;
=== Examples: ===&lt;br /&gt;
&lt;br /&gt;
adressing controll of output 3&lt;br /&gt;
 OUTPUTS/3/ACTION&lt;br /&gt;
getting voltage on output 1&lt;br /&gt;
 OUTPUTS/1/VOLTAGE&lt;br /&gt;
getting state of input 1&lt;br /&gt;
 INPUTS/1/STATE&lt;br /&gt;
&lt;br /&gt;
= Group Events&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Group events are smart way how to keep configuration simple. It is not replacement of publish section specification but it is extension to trigger group of different topics to be published on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below. There is specific event on status change on every output and additionally the device sends periodic status every 60 seconds.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;broker&amp;quot;: {&lt;br /&gt;
   &amp;quot;clientid&amp;quot;: &amp;quot;netio${DEVICE_SN}&amp;quot;,&lt;br /&gt;
   &amp;quot;keepalive&amp;quot;: 30,&lt;br /&gt;
   &amp;quot;password&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
   &amp;quot;port&amp;quot;: 1883,&lt;br /&gt;
   &amp;quot;protocol&amp;quot;: &amp;quot;mqtt&amp;quot;,&lt;br /&gt;
   &amp;quot;ssl&amp;quot;: false,&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;generic&amp;quot;,&lt;br /&gt;
   &amp;quot;url&amp;quot;: &amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
   &amp;quot;username&amp;quot;: &amp;quot;&amp;quot;&lt;br /&gt;
 },&lt;br /&gt;
 &amp;lt;b&amp;gt;&amp;quot;groupEvents&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;:[&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;period&amp;quot;: 60,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;timer&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;,&lt;br /&gt;
        &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
   }&lt;br /&gt;
  ],&amp;lt;/b&amp;gt;&lt;br /&gt;
 &amp;quot;publish&amp;quot;: [&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   },{&lt;br /&gt;
     &amp;quot;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
         &amp;quot;type&amp;quot;: &amp;quot;change&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     ],&lt;br /&gt;
     &amp;quot;payload&amp;quot;: &amp;quot;${OUTPUTS/2/STATE}&amp;quot;,&lt;br /&gt;
     &amp;quot;qos&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;retain&amp;quot;: false,&lt;br /&gt;
    &amp;lt;b&amp;gt; &amp;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&amp;lt;/b&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
 ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Variables =&lt;br /&gt;
In some parameters is nescessary to use variables to get current state and measurements. &amp;lt;b&amp;gt;Variables are separated in  two categories:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Target/Source variables&lt;br /&gt;
* Payload Topic variables&lt;br /&gt;
&lt;br /&gt;
== Target Source Variables ==&lt;br /&gt;
&lt;br /&gt;
The list of available variables for each &lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS variables ===&lt;br /&gt;
==== VOLTAGE ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;V&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS voltage on output 1 is ${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== CURRENT ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;mA&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present RMS current on output 1 is ${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== POWER_FACTOR ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;[-]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: float (2 decimals)&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;True Power Factor on output 1 is ${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LOAD ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;W&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present load on output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Device's load connected to output 1 is ${OUTPUTS/1/LOAD}W&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present output 1 state is ${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ACTION ====&lt;br /&gt;
Type: integer&lt;br /&gt;
&lt;br /&gt;
Possible actions:&lt;br /&gt;
* &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; - set state OFF&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - set state ON&lt;br /&gt;
* &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; - short OFF (restart)&lt;br /&gt;
* &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; - short ON&lt;br /&gt;
* &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; - toggle (switch)&lt;br /&gt;
* &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt; - no change&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DELAY [ms] ====&lt;br /&gt;
==== NAME ====&lt;br /&gt;
==== FREQUENCY ====&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Hz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Frequency in power grid is ${OUTPUTS/1/ENERGY}Hz&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY ====&lt;br /&gt;
Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY ====&lt;br /&gt;
Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;unix timestamp&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START} unix time&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;  is output payload &amp;lt;code&amp;gt;1567654639&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_START_FMT ====&lt;br /&gt;
Date when the counters ENERGY and REVERSE_ENERGY have been resetted by user.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;fmt date format&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: string &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Energy measured since ${OUTPUTS/1/ENERGY_START}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_START_FMT}&amp;quot;&amp;lt;/code&amp;gt; is output payload &amp;lt;code&amp;gt;2019-09-05T03:37:19+00:00&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy consumed by an device connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Consumed energy on output 1 is ${OUTPUTS/1/ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== REVERSE_ENERGY_NR ====&lt;br /&gt;
Non-resettable counter of Energy delivered back to grid. For example from solar system connected to NETIO device output.&lt;br /&gt;
&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;Wh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Delivered energy on output 1 is ${OUTPUTS/1/REVERSE_ENERGY_NR}Wh&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${OUTPUTS/1/REVERSE_ENERGY_NR}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== TOTALs - for use with devices having more than 1 measured output ====&lt;br /&gt;
&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/LOAD&lt;br /&gt;
* OUTPUTS/TOTAL/CURRENT&lt;br /&gt;
* OUTPUTS/TOTAL/VOLTAGE&lt;br /&gt;
* OUTPUTS/TOTAL/POWER_FACTOR&lt;br /&gt;
* OUTPUTS/TOTAL/FREQUENCY&lt;br /&gt;
* OUTPUTS/TOTAL/PHASE&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/REVERSE_ENERGY_NR&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START&lt;br /&gt;
* OUTPUTS/TOTAL/ENERGY_START_FMT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== REST_JSON ====&lt;br /&gt;
Allow use of NETIO JSON structure to control outputs.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;&amp;lt;/code&amp;gt; for Subscribe section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;target&amp;quot;: &amp;quot;REST_JSON&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The payload is JSON structure identical to NETIO JSON API M2M Protocol (documentation available at https://www.netio-products.com/files/NETIO-M2M-API-Protocol-JSON.pdf). You can control one or multiple outputs.&lt;br /&gt;
&lt;br /&gt;
Payload example 1 - Toggle output 1: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;: 1,&amp;quot;Action&amp;quot;: 4}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example 2 - Turn output 1 OFF and output 3 ON: &amp;lt;code&amp;gt;{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:0},{&amp;quot;ID&amp;quot;:3,&amp;quot;Action&amp;quot;:1}]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUT variables ===&lt;br /&gt;
==== STATE ====&lt;br /&gt;
Type: bool(integer) - &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Present input 1 state is ${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/STATE}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== S0 ====&lt;br /&gt;
S0 Counter value&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 S0 Counter value is ${INPUTS/1/S0}impulses&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/S0}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TEMPERATURE ====&lt;br /&gt;
Temperature measurement in Celsius, Fahrenheit&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Celsius value is ${INPUTS/1/TEMP} [C] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMP}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 3: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Temperature value in degree of Fahrenheit is ${INPUTS/1/TEMPF} [F] &amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/TEMPF}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== HUMIDITY ====&lt;br /&gt;
Relative Humidity measurement in[%]&lt;br /&gt;
Unit: &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Type: integer &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;Input 1 Humidity value is ${INPUTS/1/HUMIDITY} %&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;source&amp;quot;:&amp;quot;${INPUTS/1/HUMIDITY}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Payload/topic variables ==&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_NAME ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_NAME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DEVICE_MAC ===&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;, &amp;quot;topic&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${DEVICE_MAC}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;code&amp;gt;&amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/action&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UTC_TIME &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
send unix timestamp of devices actual time&lt;br /&gt;
&lt;br /&gt;
Can be used in: &amp;quot;payload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;: &amp;quot;${UTC_TIME}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UPTIME &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== PAYLOAD ===&lt;br /&gt;
Can be used in: &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;action&amp;quot;:&amp;quot;${PAYLOAD}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OUTPUT_ID &amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
=== WIFI_SIGNAL&amp;lt;sup&amp;gt;Not yet implemented&amp;lt;/sup&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
=== OUTPUTS_STATUS ===&lt;br /&gt;
Provide complete outputs status and measurement if supported.&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:236,&amp;quot;TotalCurrent&amp;quot;:72,&amp;quot;TotalLoad&amp;quot;:11,&amp;quot;TotalEnergy&amp;quot;:167,&amp;quot;OverallPowerFactor&amp;quot;:0.64,&amp;quot;Frequency&amp;quot;:50.07,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:72,&amp;quot;PowerFactor&amp;quot;:0.64,&amp;quot;Phase&amp;quot;:-36.86,&amp;quot;Energy&amp;quot;:139,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:11}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:27,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:2020} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INPUTS_STATUS ===&lt;br /&gt;
Provide complete inputs status if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INPUTS_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== INOUT_STATUS ===&lt;br /&gt;
Provide complete inputs and output status and measurement if supported. Since FW 3.0.0&lt;br /&gt;
&lt;br /&gt;
Type: string / JSON&lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;&amp;lt;/code&amp;gt; for Publish section&lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;code&amp;gt;&amp;quot;payload&amp;quot;:&amp;quot;${INOUT_STATUS}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Payload example: &amp;lt;code&amp;gt;{ &amp;quot;GlobalMeasure&amp;quot;:{&amp;quot;Voltage&amp;quot;:238,&amp;quot;TotalCurrent&amp;quot;:105,&amp;quot;TotalLoad&amp;quot;:17,&amp;quot;TotalEnergy&amp;quot;:1451,&amp;quot;OverallPowerFactor&amp;quot;:0.67,&amp;quot;Frequency&amp;quot;:50.03,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;EnergyStart&amp;quot;:&amp;quot;2020-06-30T17:04:48+01:00&amp;quot;}, &amp;quot;Outputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Power output 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:0,&amp;quot;PowerFactor&amp;quot;:1.00,&amp;quot;Phase&amp;quot;:0.00,&amp;quot;Energy&amp;quot;:701,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Power output 2&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000,&amp;quot;Current&amp;quot;:105,&amp;quot;PowerFactor&amp;quot;:0.65,&amp;quot;Phase&amp;quot;:-33.67,&amp;quot;Energy&amp;quot;:750,&amp;quot;ReverseEnergy&amp;quot;:0,&amp;quot;Load&amp;quot;:17}, {&amp;quot;ID&amp;quot;:3,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 3&amp;quot;,&amp;quot;State&amp;quot;:1,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000}, {&amp;quot;ID&amp;quot;:4,&amp;quot;Name&amp;quot;:&amp;quot;Free Contact 4&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;Action&amp;quot;:6,&amp;quot;Delay&amp;quot;:5000} ], &amp;quot;Inputs&amp;quot;:[ {&amp;quot;ID&amp;quot;:1,&amp;quot;Name&amp;quot;:&amp;quot;Input 1&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0}, {&amp;quot;ID&amp;quot;:2,&amp;quot;Name&amp;quot;:&amp;quot;Input 2&amp;quot;,&amp;quot;State&amp;quot;:0,&amp;quot;S0Counter&amp;quot;:0} ]}&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Extended MQTT flex JSON config examples =&lt;br /&gt;
&lt;br /&gt;
== Default NETIO MQTT-flex configuration ==&lt;br /&gt;
This example demonstrates setup for connection to public &amp;lt;code&amp;gt;broker.hivemq.com&amp;lt;/code&amp;gt;, measurement reporting and output control.&lt;br /&gt;
&lt;br /&gt;
The device cabe be controlled via &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/action topic&amp;lt;/code&amp;gt; by sending standard NETIO action values:&lt;br /&gt;
* 0 - OFF&lt;br /&gt;
* 1 - ON&lt;br /&gt;
* 2 - SHORT OFF&lt;br /&gt;
* 3 - SHORT ON&lt;br /&gt;
* 4 - TOGGLE&lt;br /&gt;
* 5 - NO ACTION.&lt;br /&gt;
&lt;br /&gt;
The device report measurements:&lt;br /&gt;
&lt;br /&gt;
* Output state - every 15 minutes or by change&lt;br /&gt;
* Voltage [V]- every 5 minutes or by change of 1 V&lt;br /&gt;
* Current [mA]- every 5 minutes or by change of 50 mA&lt;br /&gt;
* Load(Power) [W]- every 5 minutes or by change of 10 W&lt;br /&gt;
* Energy(Consumption) [Wh]- every 15 minutes or by change of 1Wh&lt;br /&gt;
* True Power Factor (TPF) [-]- every 5 minutes or by change of 0.02&lt;br /&gt;
* Frequency [Hz]- every 1 hour or by change of 0.1 Hz&lt;br /&gt;
&lt;br /&gt;
For register all values, you can use wildcard &amp;lt;code&amp;gt;netio/${DEVICE_NAME}/output/1/#&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;config&amp;quot;:{&lt;br /&gt;
      &amp;quot;broker&amp;quot;:{&lt;br /&gt;
         &amp;quot;url&amp;quot;:&amp;quot;broker.hivemq.com&amp;quot;,&lt;br /&gt;
         &amp;quot;protocol&amp;quot;:&amp;quot;mqtt&amp;quot;,&lt;br /&gt;
         &amp;quot;port&amp;quot;:1883,&lt;br /&gt;
         &amp;quot;ssl&amp;quot;:false,&lt;br /&gt;
         &amp;quot;type&amp;quot;:&amp;quot;generic&amp;quot;,&lt;br /&gt;
         &amp;quot;username&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;password&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
         &amp;quot;clientid&amp;quot;:&amp;quot;moje${DEVICE_NAME}${DEVICE_MAC}&amp;quot;,&lt;br /&gt;
         &amp;quot;keepalive&amp;quot;:30&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;subscribe&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/action&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:&amp;quot;${payload}&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/switch&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;target&amp;quot;:&amp;quot;OUTPUTS/1/ACTION&amp;quot;,&lt;br /&gt;
            &amp;quot;action&amp;quot;:4&lt;br /&gt;
         }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;publish&amp;quot;:[&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_MAC}/output/1/state&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:true,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/STATE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/STATE&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/voltage&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/VOLTAGE}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/VOLTAGE&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/current&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/CURRENT}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:50&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/load&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/LOAD}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:300&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:10&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/energy&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/ENERGY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/ENERGY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/tpf&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/POWER_FACTOR}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:900&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/POWER_FACTOR&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.02&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         },&lt;br /&gt;
         {&lt;br /&gt;
            &amp;quot;topic&amp;quot;:&amp;quot;netio/${DEVICE_NAME}/output/1/frequency&amp;quot;,&lt;br /&gt;
            &amp;quot;qos&amp;quot;:0,&lt;br /&gt;
            &amp;quot;retain&amp;quot;:false,&lt;br /&gt;
            &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/1/FREQUENCY}&amp;quot;,&lt;br /&gt;
            &amp;quot;events&amp;quot;:[&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;timer&amp;quot;,&lt;br /&gt;
                  &amp;quot;period&amp;quot;:3600&lt;br /&gt;
               },&lt;br /&gt;
               {&lt;br /&gt;
                  &amp;quot;type&amp;quot;:&amp;quot;delta&amp;quot;,&lt;br /&gt;
                  &amp;quot;source&amp;quot;:&amp;quot;OUTPUTS/1/FREQUENCY&amp;quot;,&lt;br /&gt;
                  &amp;quot;delta&amp;quot;:0.1&lt;br /&gt;
               }&lt;br /&gt;
            ]&lt;br /&gt;
         }&lt;br /&gt;
      ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1079</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1079"/>
		<updated>2025-08-13T08:42:19Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared with M2M API protocols setup. NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:NETIO_4PZ_HTTPs.png |Https setup]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (&amp;lt;b&amp;gt;Supported&amp;lt;/b&amp;gt;) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1078</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1078"/>
		<updated>2025-08-13T08:41:32Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared with M2M API protocols setup. NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:NETIO_4PZ_HTTPs.png |Https setup]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (&amp;lt;b&amp;gt;Supported&amp;lt;/b&amp;gt;) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1077</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1077"/>
		<updated>2025-08-13T08:39:37Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared with M2M API protocols setup. NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:NETIO_4PZ_HTTPs.png |Https setup]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (&amp;lt;b&amp;gt;Supported&amp;lt;/b&amp;gt;) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1076</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1076"/>
		<updated>2025-08-13T08:34:40Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:NETIO_4PZ_HTTPs.png |Https setup]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (&amp;lt;b&amp;gt;Supported&amp;lt;/b&amp;gt;) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1075</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1075"/>
		<updated>2025-08-13T08:32:37Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:NETIO_4PZ_HTTPs.png |Https setup]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (&amp;lt;b&amp;gt;Supported&amp;lt;/b&amp;gt;) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1074</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1074"/>
		<updated>2025-08-13T08:30:08Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[File:NETIO_4PZ_HTTPs.png |Https setup]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=File:NETIO_4PZ_HTTPs.png&amp;diff=1073</id>
		<title>File:NETIO 4PZ HTTPs.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=File:NETIO_4PZ_HTTPs.png&amp;diff=1073"/>
		<updated>2025-08-13T08:28:23Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1071</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1071"/>
		<updated>2025-08-11T12:16:43Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1070</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1070"/>
		<updated>2025-08-11T12:16:15Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1069</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1069"/>
		<updated>2025-08-11T12:08:42Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;em&amp;gt;https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&amp;lt;/em&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tbody&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1068</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1068"/>
		<updated>2025-08-11T11:57:53Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tbody&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;ecc_secp521r1&amp;lt;/strong&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;text-align: center;&amp;quot;&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1067</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1067"/>
		<updated>2025-08-11T11:54:37Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure M2M API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_prime256v1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp384r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp521r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br&amp;gt;&lt;br /&gt;
** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1066</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1066"/>
		<updated>2025-08-11T11:52:34Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Secure API Access via HTTPs&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_prime256v1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp384r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp521r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br&amp;gt;&lt;br /&gt;
** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1065</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1065"/>
		<updated>2025-08-11T11:48:18Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;How NETIO Devices Use HTTPS for Secure API Access&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
**(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; API Performance testing &amp;lt;/b&amp;gt;&lt;br /&gt;
In internal NETIO testing on PowerPDU 4KS device (see below), various cipher suites and elliptic curves were evaluated for performance during secure HTTPS communication with the JSON and WebSocket APIs. Prime256v1 (NIST P-256) is recommended for best performance and compatibility. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_prime256v1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp384r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp521r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br&amp;gt;&lt;br /&gt;
** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1064</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1064"/>
		<updated>2025-08-11T11:47:00Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;How NETIO Devices Use HTTPS for Secure API Access&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(**Replace netio123 with your actual API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time Web Socket [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;Response time JSON [s]&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_prime256v1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.9&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.6&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.8&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;5.7&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.1&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp384r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.2&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;b&amp;gt;ecc_secp521r1&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.4&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.7&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.3&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.6&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;6.5&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;* values are valid for ethernet connection only&amp;lt;br&amp;gt;&lt;br /&gt;
** values can differentiate on WiFi connection&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1063</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1063"/>
		<updated>2025-08-11T11:40:20Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;How NETIO Devices Use HTTPS for Secure API Access&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO devices support secure communication over HTTPS to protect API access to power sockets and configuration interfaces. This is essential when integrating NETIO devices with 3th party systems. M2M API Machine protocols setup uses the same port as being setup at configuration setting. &lt;br /&gt;
Device provide access to various machine-readable APIs, such as:&lt;br /&gt;
**JSON API&lt;br /&gt;
**XML API&lt;br /&gt;
**MQTTs (optional for some models)&lt;br /&gt;
**URL&lt;br /&gt;
&lt;br /&gt;
As HTTPS is enabled, all communication with these APIs is encrypted using TLS (Transport Layer Security). This ensures that authentication tokens, control commands (e.g., socket ON/OFF), and monitoring data cannot be intercepted or altered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an examples of turning socket 1 ON using the JSON API over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
curl -k netio_user:netio_password -d '{&amp;quot;Outputs&amp;quot;:[{&amp;quot;ID&amp;quot;:1,&amp;quot;Action&amp;quot;:1}]}' -H &amp;quot;Content-Type: application/json&amp;quot; -X POST https://192.168.105.160:81/netio.json&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(**Replace netio_user &amp;amp; netio_password with proper JSON API password)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Here is an example of turning socket 1 ON using URL over HTTPS:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
https://192.168.1.100/netio.json?pass=netio123&amp;amp;output1=1&amp;quot;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
(**Replace netio123 with your actual API password)&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1062</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1062"/>
		<updated>2025-08-11T11:30:18Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse; width: 97.80949%;&amp;quot; border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_prime256v1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot; width=&amp;quot;269&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp384r1&amp;lt;/strong&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; ecc_secp521r1&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_256_CCM:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_ECDHE_ECDSA_WITH_AES_128_CCM&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 8.687943%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_1024&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 20.451527%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_2048&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;-&amp;lt;strong&amp;gt;&amp;amp;gt; rsa_3072&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 10.225763%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;-&amp;amp;gt; rsa_4096&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_GCM_SHA384&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_GCM_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_CCM&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA256&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_256_SHA&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 400;&amp;quot;&amp;gt;&amp;amp;nbsp;TLS_RSA_WITH_AES_128_SHA&amp;lt;/span&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1061</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1061"/>
		<updated>2025-08-11T11:14:20Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/h1&amp;gt; HTTPs is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/h2&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
****ADD PICTURE&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;TLS Versions and Cipher Suites Supported by NETIO&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NETIO power devices support encrypted HTTPS communication using the TLS (Transport Layer Security) protocol. TLS ensures confidentiality, integrity, and authentication when accessing the device’s web interface or APIs (e.g., JSON/XML REST API).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Supported TLS Versions.:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**TLS 1.0 and TLS 1.1 – (Deprecated for security reasons)&lt;br /&gt;
**TLS 1.2 (Supported) (minimum secure standard and should always be used).Legacy TLS versions are disabled by default for security.&lt;br /&gt;
**TLS 1.3 – Not supported at the moment* (future development under investigation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NETIO firmware supports multiple cipher suites using &amp;lt;b&amp;gt;RSA&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;ECDHE&amp;lt;/b&amp;gt; (Elliptic Curve Diffie-Hellman Ephemeral) key exchange, combined with AES encryption (GCM/CCM) modes. There is a list of supported TLS cipher suites and key types that NETIO devices accept when establishing a secure HTTPS connection.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Key Types used during the TLS handshake:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ecc_prime256v1 – elliptic curve (ECDSA) key, 256-bit (NIST P-256)&lt;br /&gt;
**ecc_secp384r1 – stronger ECC key, 384-bit&lt;br /&gt;
**ecc_secp521r1 – even stronger ECC key, 521-bit&lt;br /&gt;
**rsa_1024 / rsa_2048 / rsa_3072 / rsa_4096 – RSA keys of corresponding lengths&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;b&amp;gt;Cipher Suite – a specific combination of algorithms used to encrypt the TLS connection:&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt;&lt;br /&gt;
**ECDHE – key exchange algorithm (supports forward secrecy)&lt;br /&gt;
**ECDSA – digital certificate based on ECC key (e.g., prime256v1)&lt;br /&gt;
**AES_256_GCM – symmetric encryption (AES 256-bit, Galois/Counter Mode)&lt;br /&gt;
**SHA384 – hashing algorithm used for integrity checks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List on combinations tested with NETIO device&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1060</id>
		<title>HTTPs details</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=HTTPs_details&amp;diff=1060"/>
		<updated>2025-08-11T10:49:44Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: Created page with &amp;quot;&amp;lt;br /&amp;gt; &amp;lt;b&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/b&amp;gt; is the secure version of HTTP, the protocol used for communication between a web browser or application and a web serv...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/b&amp;gt; is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1059</id>
		<title>Welcome to NETIO resources &amp; projects &amp; documentation overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1059"/>
		<updated>2025-08-11T10:48:45Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* NETIO Secure communication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 40%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;Interoperability&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
===NETIO unified Open API===&lt;br /&gt;
&lt;br /&gt;
*[[JSON API]] (default enabled)&lt;br /&gt;
&lt;br /&gt;
*[[MQTT-flex]]&lt;br /&gt;
&lt;br /&gt;
*[[NETIO Cloud API]]&lt;br /&gt;
&lt;br /&gt;
*[[HTTP(s) Push - JSON/XML]]&lt;br /&gt;
&lt;br /&gt;
*[[Modbus TCP]]&lt;br /&gt;
&lt;br /&gt;
*[[SNMP]]&lt;br /&gt;
&lt;br /&gt;
*[[Telnet/Kshell]]&lt;br /&gt;
&lt;br /&gt;
*[[URL API]]&lt;br /&gt;
&lt;br /&gt;
*[[XML API]]&lt;br /&gt;
&lt;br /&gt;
*[[MQTT]] (PowerPDU 4C)&lt;br /&gt;
&lt;br /&gt;
*[[SIP]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===NETIO Secure communication===  &lt;br /&gt;
*[[HTTPs details]]&lt;br /&gt;
&lt;br /&gt;
===AV drivers for NETIO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''[https://www.netio-products.com/en/partners#BrightSign BrightSign]'''&lt;br /&gt;
*'''DOMOTZ''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[[ELAN]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Crestron '''Crestron''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Control%204 '''Control 4''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#HSYCO '''HSYCO''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Neets%20A/S '''Neets''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#RTI '''RTI''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Savant '''SAVANT''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations from NETIO===&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an22-abacom-profilab-expert-software-controls-netio-power-sockets-and-reads-measurements '''ABACOM''' ProfiLab-Expert]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an33-domoticz-controls-netio-smart-sockets-http-json Domoticz]&lt;br /&gt;
&lt;br /&gt;
*'''Domotz''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[https://forum.fibaro.com/topic/53599-quickapp-netio/ '''Fibaro HC3''']&lt;br /&gt;
 &lt;br /&gt;
*[https://www.netio-products.com/en/partners#Grafana '''Grafana''']&lt;br /&gt;
&lt;br /&gt;
*[[HiveMQ]] (using MQTT-flex)&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an53-loxone-controls-netio-power-sockets-with-url-api-or-modbustcp LOXONE]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an26-ms-azure-and-netio-4x-power-metering-and-output-control-from-a-cloud-service MS Azure]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an41-power-monitoring-over-snmp-in-zabbix-nagios-for-netio-power-sockets '''Nagios'' / '''''&amp;lt;nowiki/&amp;gt;''Zabbix'&amp;lt;nowiki/&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
*'''[[NodeRED]]''' - several examples&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Paessler%20AG '''PRTG - Paessler''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/pixilab/blocks-script/tree/master/driver PIXILAB Blocks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; Community &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
[https://github.com/netioproducts NETIO GitHub - official]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetio PyNetio (Python to control NETIOs)]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetioConf PyNetioConf - python library control/manage NETIO devices ]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples c-sharp-examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/python-netio-discover python-netio-discover]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/php-examples PHP examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/netio-data-collector NETIO data collector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[NETIO UDP Discover]]&lt;br /&gt;
&lt;br /&gt;
[[NETIO UPnP (Universal Plug and Play)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Koukaam/netio-utils/tree/master/actions GitHub - obsolete (Koukaam)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations by Community===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/bitfocus/companion-module-netio-powerbox '''Companion''' module by Bitfocus AS]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/elmicro/fhem_netio_4x_pm '''FHEM''' module by Elmicro]&lt;br /&gt;
&lt;br /&gt;
*[https://grafana.com/grafana/dashboards/12022-netio-power-pdu/ '''Grafana''' dashboard for Prometheus]&lt;br /&gt;
&lt;br /&gt;
*[https://www.home-assistant.io/components/netio/ '''Home Assistant''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
*[https://github.com/jvyoralek/homeassistant-config/tree/master/products/netio HomeAssistant - PowerCable MQTTflex]&lt;br /&gt;
&lt;br /&gt;
*[[HomeAssistant - PowerCable MQTTflex configuration update]]&lt;br /&gt;
&lt;br /&gt;
*[https://peyanski.com/netio-powerdin-4pz-and-home-assistant/ PowerDIN 4PZ smart electricity meter and Home Assistant]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/VerosK/icinga-check-netio-pdu '''Icinga''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin] &lt;br /&gt;
&lt;br /&gt;
*[https://www.jam-software.com/serversentinel/online_manual/EN/index.html?actions_netio230bnetworkpowersocket.html '''Jam-software''' - ServerSentinel]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/stdevel/check_netio '''Nagios plugin''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.instructables.com/id/How-to-Work-With-JSON-in-Node-RED/ '''NodeRED''' access to NETIO 4All]&lt;br /&gt;
&lt;br /&gt;
*[https://jirikuba.github.io/NETIO.SpinaniHDO/ '''NETIO controlled by HDO in Lua''']&lt;br /&gt;
&lt;br /&gt;
*[https://bytehive.gumroad.com/l/playoutbee?layout=profile '''PlayoutBee''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/tomsajan/netio-exporter '''Prometheus''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/st3veV/Netio-OpenHAB '''OpenHAB''' using MQTT]&lt;br /&gt;
&lt;br /&gt;
*[https://groups.google.com/forum/#!topic/openhab/O6psocjU70s '''OpenHAB''' Reading power consumption - HTTP (NETIO4)]&lt;br /&gt;
&lt;br /&gt;
*[https://discourse.ros.org/t/netio-ros-interface/20737 '''ROS''' Robot Operating System integration]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programming examples===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/svartnos/NETIO4-Json-Demo '''C# example''' JSON based device control example]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples/tree/master/netioControllerXML-Stefano '''M2M XML API integration in C#''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/rynr/netio '''Java Control Library''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/imolein/lua-netio '''LUA control Library''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Other 3rd party tools===&lt;br /&gt;
&lt;br /&gt;
*[https://www1.stardraw.com/stardraw2/sd7/features/manufacturer/6f7f9fe5-0026-4922-b15c-d287d3ce3fef '''Stardraw''' Design 7.3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 1em 0 0; border-right: 0px solid gray; width: 60%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;NETIO Conditions &amp;amp; Rules: Local device scripting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;These features are available for all NETIO devices except PowerPDU 4C (LUA is supported there)&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&amp;lt;br /&amp;gt;Check most common practical examples&lt;br /&gt;
&lt;br /&gt;
===Power Analysis Blocks (PAB)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=PAB '''PAB Description''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#RANGE '''PAB - RANGE''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#ZONES '''PAB - ZONES''']&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WatchDog (WDT)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog Description''']&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog_Examples '''WatchDog Examples''']&lt;br /&gt;
**One IP address WatchDog&lt;br /&gt;
**Multiple IP addresses WatchDog with rules&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Rules '''Rules Description''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; NETIO Lua Programming &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Lua is available for PowerPDU 4C device only&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Don't know LUA?===&lt;br /&gt;
====[https://www.lua.org/pil/contents.html Official Lua tutorial]====&lt;br /&gt;
If you are new to Lua and programming as such and if you are eager to learn, this is your starting point. Before you proceed to NETIO Sockets, this [https://www.lua.org/demo.html online environment] will be a good place to test your first scripts.&lt;br /&gt;
====[https://www.lua.org/manual/5.3/ Official Lua manual]====&lt;br /&gt;
Although you won't need everything mentioned here, it is worth to peek here from time to time to grasp the concepts of effective Lua programming.&lt;br /&gt;
&lt;br /&gt;
===Lua in NETIO===&lt;br /&gt;
If you already know Lua, just keep in mind that &amp;lt;b&amp;gt;NETIO Lua loops are limited to 32k cycles&amp;lt;/b&amp;gt; and all &amp;lt;b&amp;gt;numbers are integers, not decimals&amp;lt;/b&amp;gt; like in standard Lua.&lt;br /&gt;
====[[Lua basics for other language programmers]]====&lt;br /&gt;
A quick jump into NETIO Lua programming if you mastered another programming language. It's simple...&lt;br /&gt;
====[[NETIO Lua Tips &amp;amp; Philosophy]]====&lt;br /&gt;
Explanation of starting LUA scripts in NETIO devices and some tips how to hack NETIO to doing what you want.&lt;br /&gt;
&lt;br /&gt;
====[[NETIO Specific Reference manual]]====&lt;br /&gt;
If you can already code in Lua, NETIO-specific Lua functions is your main guide to programing NETIO Sockets.&lt;br /&gt;
&lt;br /&gt;
====[[Examples &amp;amp; Aplication notes]]====&lt;br /&gt;
Aplication notes for devices supporting LUA programming. Example configurations downloads and Script programming explanation with direct links to reference&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;[https://www.netio-products.com/en/glossary/m2m-active-client M2M Lua Active Client]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;M2M Lua Active Client&amp;lt;/b&amp;gt; means = SNMP get/set, HTTP get, MQTT from the custom Lua scripts. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1058</id>
		<title>Welcome to NETIO resources &amp; projects &amp; documentation overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1058"/>
		<updated>2025-08-11T10:48:15Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* NETIO Secure communication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 40%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;Interoperability&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
===NETIO unified Open API===&lt;br /&gt;
&lt;br /&gt;
*[[JSON API]] (default enabled)&lt;br /&gt;
&lt;br /&gt;
*[[MQTT-flex]]&lt;br /&gt;
&lt;br /&gt;
*[[NETIO Cloud API]]&lt;br /&gt;
&lt;br /&gt;
*[[HTTP(s) Push - JSON/XML]]&lt;br /&gt;
&lt;br /&gt;
*[[Modbus TCP]]&lt;br /&gt;
&lt;br /&gt;
*[[SNMP]]&lt;br /&gt;
&lt;br /&gt;
*[[Telnet/Kshell]]&lt;br /&gt;
&lt;br /&gt;
*[[URL API]]&lt;br /&gt;
&lt;br /&gt;
*[[XML API]]&lt;br /&gt;
&lt;br /&gt;
*[[MQTT]] (PowerPDU 4C)&lt;br /&gt;
&lt;br /&gt;
*[[SIP]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===NETIO Secure communication===  &lt;br /&gt;
*[[HTTPs details]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;HTTPS (Hypertext Transfer Protocol Secure)&amp;lt;/b&amp;gt; is the secure version of HTTP, the protocol used for communication between a web browser or application and a web server or device. HTTPS adds a layer of encryption using TLS (Transport Layer Security), which protects the data transmitted over the network.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Why Use HTTPs with NETIO Power Devices?&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
NETIO devices often operate in environments where they are remotely controlled or monitored, sometimes even over public or shared networks. Using HTTPS ensures that communication between your application and the NETIO device remains private and secure, even if someone intercepts the network traffic.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;How to enable HTTPs on NETIO Device&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
All NETIO devices running on &amp;lt;b&amp;gt;&amp;lt;u&amp;gt;FW 5.0.X&amp;lt;/b&amp;gt;&amp;lt;/u&amp;gt; can be configure the way to support HTTPs communication. HTTPs option is available via Setting/ Security. Port 443 is pre-defined, but can be changed. HTTPs configuration port is shared to the port at M2M API Machine protocols setup NETIO devices support HTTPs using a self-signed certificate by default. This allows you to use secure connections immediately, even in isolated or internal networks. For production environments or public access, it is recommended to upload a certificate from a trusted Certificate Authority (CA). This ensures proper validation and avoids browser or client warnings.&lt;br /&gt;
&lt;br /&gt;
===AV drivers for NETIO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''[https://www.netio-products.com/en/partners#BrightSign BrightSign]'''&lt;br /&gt;
*'''DOMOTZ''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[[ELAN]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Crestron '''Crestron''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Control%204 '''Control 4''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#HSYCO '''HSYCO''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Neets%20A/S '''Neets''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#RTI '''RTI''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Savant '''SAVANT''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations from NETIO===&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an22-abacom-profilab-expert-software-controls-netio-power-sockets-and-reads-measurements '''ABACOM''' ProfiLab-Expert]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an33-domoticz-controls-netio-smart-sockets-http-json Domoticz]&lt;br /&gt;
&lt;br /&gt;
*'''Domotz''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[https://forum.fibaro.com/topic/53599-quickapp-netio/ '''Fibaro HC3''']&lt;br /&gt;
 &lt;br /&gt;
*[https://www.netio-products.com/en/partners#Grafana '''Grafana''']&lt;br /&gt;
&lt;br /&gt;
*[[HiveMQ]] (using MQTT-flex)&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an53-loxone-controls-netio-power-sockets-with-url-api-or-modbustcp LOXONE]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an26-ms-azure-and-netio-4x-power-metering-and-output-control-from-a-cloud-service MS Azure]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an41-power-monitoring-over-snmp-in-zabbix-nagios-for-netio-power-sockets '''Nagios'' / '''''&amp;lt;nowiki/&amp;gt;''Zabbix'&amp;lt;nowiki/&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
*'''[[NodeRED]]''' - several examples&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Paessler%20AG '''PRTG - Paessler''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/pixilab/blocks-script/tree/master/driver PIXILAB Blocks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; Community &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
[https://github.com/netioproducts NETIO GitHub - official]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetio PyNetio (Python to control NETIOs)]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetioConf PyNetioConf - python library control/manage NETIO devices ]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples c-sharp-examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/python-netio-discover python-netio-discover]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/php-examples PHP examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/netio-data-collector NETIO data collector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[NETIO UDP Discover]]&lt;br /&gt;
&lt;br /&gt;
[[NETIO UPnP (Universal Plug and Play)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Koukaam/netio-utils/tree/master/actions GitHub - obsolete (Koukaam)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations by Community===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/bitfocus/companion-module-netio-powerbox '''Companion''' module by Bitfocus AS]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/elmicro/fhem_netio_4x_pm '''FHEM''' module by Elmicro]&lt;br /&gt;
&lt;br /&gt;
*[https://grafana.com/grafana/dashboards/12022-netio-power-pdu/ '''Grafana''' dashboard for Prometheus]&lt;br /&gt;
&lt;br /&gt;
*[https://www.home-assistant.io/components/netio/ '''Home Assistant''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
*[https://github.com/jvyoralek/homeassistant-config/tree/master/products/netio HomeAssistant - PowerCable MQTTflex]&lt;br /&gt;
&lt;br /&gt;
*[[HomeAssistant - PowerCable MQTTflex configuration update]]&lt;br /&gt;
&lt;br /&gt;
*[https://peyanski.com/netio-powerdin-4pz-and-home-assistant/ PowerDIN 4PZ smart electricity meter and Home Assistant]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/VerosK/icinga-check-netio-pdu '''Icinga''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin] &lt;br /&gt;
&lt;br /&gt;
*[https://www.jam-software.com/serversentinel/online_manual/EN/index.html?actions_netio230bnetworkpowersocket.html '''Jam-software''' - ServerSentinel]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/stdevel/check_netio '''Nagios plugin''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.instructables.com/id/How-to-Work-With-JSON-in-Node-RED/ '''NodeRED''' access to NETIO 4All]&lt;br /&gt;
&lt;br /&gt;
*[https://jirikuba.github.io/NETIO.SpinaniHDO/ '''NETIO controlled by HDO in Lua''']&lt;br /&gt;
&lt;br /&gt;
*[https://bytehive.gumroad.com/l/playoutbee?layout=profile '''PlayoutBee''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/tomsajan/netio-exporter '''Prometheus''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/st3veV/Netio-OpenHAB '''OpenHAB''' using MQTT]&lt;br /&gt;
&lt;br /&gt;
*[https://groups.google.com/forum/#!topic/openhab/O6psocjU70s '''OpenHAB''' Reading power consumption - HTTP (NETIO4)]&lt;br /&gt;
&lt;br /&gt;
*[https://discourse.ros.org/t/netio-ros-interface/20737 '''ROS''' Robot Operating System integration]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programming examples===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/svartnos/NETIO4-Json-Demo '''C# example''' JSON based device control example]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples/tree/master/netioControllerXML-Stefano '''M2M XML API integration in C#''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/rynr/netio '''Java Control Library''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/imolein/lua-netio '''LUA control Library''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Other 3rd party tools===&lt;br /&gt;
&lt;br /&gt;
*[https://www1.stardraw.com/stardraw2/sd7/features/manufacturer/6f7f9fe5-0026-4922-b15c-d287d3ce3fef '''Stardraw''' Design 7.3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 1em 0 0; border-right: 0px solid gray; width: 60%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;NETIO Conditions &amp;amp; Rules: Local device scripting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;These features are available for all NETIO devices except PowerPDU 4C (LUA is supported there)&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&amp;lt;br /&amp;gt;Check most common practical examples&lt;br /&gt;
&lt;br /&gt;
===Power Analysis Blocks (PAB)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=PAB '''PAB Description''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#RANGE '''PAB - RANGE''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#ZONES '''PAB - ZONES''']&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WatchDog (WDT)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog Description''']&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog_Examples '''WatchDog Examples''']&lt;br /&gt;
**One IP address WatchDog&lt;br /&gt;
**Multiple IP addresses WatchDog with rules&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Rules '''Rules Description''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; NETIO Lua Programming &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Lua is available for PowerPDU 4C device only&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Don't know LUA?===&lt;br /&gt;
====[https://www.lua.org/pil/contents.html Official Lua tutorial]====&lt;br /&gt;
If you are new to Lua and programming as such and if you are eager to learn, this is your starting point. Before you proceed to NETIO Sockets, this [https://www.lua.org/demo.html online environment] will be a good place to test your first scripts.&lt;br /&gt;
====[https://www.lua.org/manual/5.3/ Official Lua manual]====&lt;br /&gt;
Although you won't need everything mentioned here, it is worth to peek here from time to time to grasp the concepts of effective Lua programming.&lt;br /&gt;
&lt;br /&gt;
===Lua in NETIO===&lt;br /&gt;
If you already know Lua, just keep in mind that &amp;lt;b&amp;gt;NETIO Lua loops are limited to 32k cycles&amp;lt;/b&amp;gt; and all &amp;lt;b&amp;gt;numbers are integers, not decimals&amp;lt;/b&amp;gt; like in standard Lua.&lt;br /&gt;
====[[Lua basics for other language programmers]]====&lt;br /&gt;
A quick jump into NETIO Lua programming if you mastered another programming language. It's simple...&lt;br /&gt;
====[[NETIO Lua Tips &amp;amp; Philosophy]]====&lt;br /&gt;
Explanation of starting LUA scripts in NETIO devices and some tips how to hack NETIO to doing what you want.&lt;br /&gt;
&lt;br /&gt;
====[[NETIO Specific Reference manual]]====&lt;br /&gt;
If you can already code in Lua, NETIO-specific Lua functions is your main guide to programing NETIO Sockets.&lt;br /&gt;
&lt;br /&gt;
====[[Examples &amp;amp; Aplication notes]]====&lt;br /&gt;
Aplication notes for devices supporting LUA programming. Example configurations downloads and Script programming explanation with direct links to reference&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;[https://www.netio-products.com/en/glossary/m2m-active-client M2M Lua Active Client]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;M2M Lua Active Client&amp;lt;/b&amp;gt; means = SNMP get/set, HTTP get, MQTT from the custom Lua scripts. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1057</id>
		<title>Welcome to NETIO resources &amp; projects &amp; documentation overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1057"/>
		<updated>2025-08-11T10:39:48Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 40%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;Interoperability&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
===NETIO unified Open API===&lt;br /&gt;
&lt;br /&gt;
*[[JSON API]] (default enabled)&lt;br /&gt;
&lt;br /&gt;
*[[MQTT-flex]]&lt;br /&gt;
&lt;br /&gt;
*[[NETIO Cloud API]]&lt;br /&gt;
&lt;br /&gt;
*[[HTTP(s) Push - JSON/XML]]&lt;br /&gt;
&lt;br /&gt;
*[[Modbus TCP]]&lt;br /&gt;
&lt;br /&gt;
*[[SNMP]]&lt;br /&gt;
&lt;br /&gt;
*[[Telnet/Kshell]]&lt;br /&gt;
&lt;br /&gt;
*[[URL API]]&lt;br /&gt;
&lt;br /&gt;
*[[XML API]]&lt;br /&gt;
&lt;br /&gt;
*[[MQTT]] (PowerPDU 4C)&lt;br /&gt;
&lt;br /&gt;
*[[SIP]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===NETIO Secure communication===  &lt;br /&gt;
*[[HTTPs details]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AV drivers for NETIO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''[https://www.netio-products.com/en/partners#BrightSign BrightSign]'''&lt;br /&gt;
*'''DOMOTZ''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[[ELAN]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Crestron '''Crestron''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Control%204 '''Control 4''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#HSYCO '''HSYCO''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Neets%20A/S '''Neets''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#RTI '''RTI''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Savant '''SAVANT''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations from NETIO===&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an22-abacom-profilab-expert-software-controls-netio-power-sockets-and-reads-measurements '''ABACOM''' ProfiLab-Expert]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an33-domoticz-controls-netio-smart-sockets-http-json Domoticz]&lt;br /&gt;
&lt;br /&gt;
*'''Domotz''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[https://forum.fibaro.com/topic/53599-quickapp-netio/ '''Fibaro HC3''']&lt;br /&gt;
 &lt;br /&gt;
*[https://www.netio-products.com/en/partners#Grafana '''Grafana''']&lt;br /&gt;
&lt;br /&gt;
*[[HiveMQ]] (using MQTT-flex)&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an53-loxone-controls-netio-power-sockets-with-url-api-or-modbustcp LOXONE]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an26-ms-azure-and-netio-4x-power-metering-and-output-control-from-a-cloud-service MS Azure]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an41-power-monitoring-over-snmp-in-zabbix-nagios-for-netio-power-sockets '''Nagios'' / '''''&amp;lt;nowiki/&amp;gt;''Zabbix'&amp;lt;nowiki/&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
*'''[[NodeRED]]''' - several examples&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Paessler%20AG '''PRTG - Paessler''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/pixilab/blocks-script/tree/master/driver PIXILAB Blocks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; Community &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
[https://github.com/netioproducts NETIO GitHub - official]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetio PyNetio (Python to control NETIOs)]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetioConf PyNetioConf - python library control/manage NETIO devices ]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples c-sharp-examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/python-netio-discover python-netio-discover]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/php-examples PHP examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/netio-data-collector NETIO data collector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[NETIO UDP Discover]]&lt;br /&gt;
&lt;br /&gt;
[[NETIO UPnP (Universal Plug and Play)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Koukaam/netio-utils/tree/master/actions GitHub - obsolete (Koukaam)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations by Community===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/bitfocus/companion-module-netio-powerbox '''Companion''' module by Bitfocus AS]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/elmicro/fhem_netio_4x_pm '''FHEM''' module by Elmicro]&lt;br /&gt;
&lt;br /&gt;
*[https://grafana.com/grafana/dashboards/12022-netio-power-pdu/ '''Grafana''' dashboard for Prometheus]&lt;br /&gt;
&lt;br /&gt;
*[https://www.home-assistant.io/components/netio/ '''Home Assistant''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
*[https://github.com/jvyoralek/homeassistant-config/tree/master/products/netio HomeAssistant - PowerCable MQTTflex]&lt;br /&gt;
&lt;br /&gt;
*[[HomeAssistant - PowerCable MQTTflex configuration update]]&lt;br /&gt;
&lt;br /&gt;
*[https://peyanski.com/netio-powerdin-4pz-and-home-assistant/ PowerDIN 4PZ smart electricity meter and Home Assistant]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/VerosK/icinga-check-netio-pdu '''Icinga''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin] &lt;br /&gt;
&lt;br /&gt;
*[https://www.jam-software.com/serversentinel/online_manual/EN/index.html?actions_netio230bnetworkpowersocket.html '''Jam-software''' - ServerSentinel]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/stdevel/check_netio '''Nagios plugin''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.instructables.com/id/How-to-Work-With-JSON-in-Node-RED/ '''NodeRED''' access to NETIO 4All]&lt;br /&gt;
&lt;br /&gt;
*[https://jirikuba.github.io/NETIO.SpinaniHDO/ '''NETIO controlled by HDO in Lua''']&lt;br /&gt;
&lt;br /&gt;
*[https://bytehive.gumroad.com/l/playoutbee?layout=profile '''PlayoutBee''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/tomsajan/netio-exporter '''Prometheus''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/st3veV/Netio-OpenHAB '''OpenHAB''' using MQTT]&lt;br /&gt;
&lt;br /&gt;
*[https://groups.google.com/forum/#!topic/openhab/O6psocjU70s '''OpenHAB''' Reading power consumption - HTTP (NETIO4)]&lt;br /&gt;
&lt;br /&gt;
*[https://discourse.ros.org/t/netio-ros-interface/20737 '''ROS''' Robot Operating System integration]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programming examples===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/svartnos/NETIO4-Json-Demo '''C# example''' JSON based device control example]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples/tree/master/netioControllerXML-Stefano '''M2M XML API integration in C#''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/rynr/netio '''Java Control Library''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/imolein/lua-netio '''LUA control Library''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Other 3rd party tools===&lt;br /&gt;
&lt;br /&gt;
*[https://www1.stardraw.com/stardraw2/sd7/features/manufacturer/6f7f9fe5-0026-4922-b15c-d287d3ce3fef '''Stardraw''' Design 7.3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 1em 0 0; border-right: 0px solid gray; width: 60%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;NETIO Conditions &amp;amp; Rules: Local device scripting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;These features are available for all NETIO devices except PowerPDU 4C (LUA is supported there)&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&amp;lt;br /&amp;gt;Check most common practical examples&lt;br /&gt;
&lt;br /&gt;
===Power Analysis Blocks (PAB)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=PAB '''PAB Description''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#RANGE '''PAB - RANGE''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#ZONES '''PAB - ZONES''']&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WatchDog (WDT)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog Description''']&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog_Examples '''WatchDog Examples''']&lt;br /&gt;
**One IP address WatchDog&lt;br /&gt;
**Multiple IP addresses WatchDog with rules&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Rules '''Rules Description''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; NETIO Lua Programming &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Lua is available for PowerPDU 4C device only&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Don't know LUA?===&lt;br /&gt;
====[https://www.lua.org/pil/contents.html Official Lua tutorial]====&lt;br /&gt;
If you are new to Lua and programming as such and if you are eager to learn, this is your starting point. Before you proceed to NETIO Sockets, this [https://www.lua.org/demo.html online environment] will be a good place to test your first scripts.&lt;br /&gt;
====[https://www.lua.org/manual/5.3/ Official Lua manual]====&lt;br /&gt;
Although you won't need everything mentioned here, it is worth to peek here from time to time to grasp the concepts of effective Lua programming.&lt;br /&gt;
&lt;br /&gt;
===Lua in NETIO===&lt;br /&gt;
If you already know Lua, just keep in mind that &amp;lt;b&amp;gt;NETIO Lua loops are limited to 32k cycles&amp;lt;/b&amp;gt; and all &amp;lt;b&amp;gt;numbers are integers, not decimals&amp;lt;/b&amp;gt; like in standard Lua.&lt;br /&gt;
====[[Lua basics for other language programmers]]====&lt;br /&gt;
A quick jump into NETIO Lua programming if you mastered another programming language. It's simple...&lt;br /&gt;
====[[NETIO Lua Tips &amp;amp; Philosophy]]====&lt;br /&gt;
Explanation of starting LUA scripts in NETIO devices and some tips how to hack NETIO to doing what you want.&lt;br /&gt;
&lt;br /&gt;
====[[NETIO Specific Reference manual]]====&lt;br /&gt;
If you can already code in Lua, NETIO-specific Lua functions is your main guide to programing NETIO Sockets.&lt;br /&gt;
&lt;br /&gt;
====[[Examples &amp;amp; Aplication notes]]====&lt;br /&gt;
Aplication notes for devices supporting LUA programming. Example configurations downloads and Script programming explanation with direct links to reference&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;[https://www.netio-products.com/en/glossary/m2m-active-client M2M Lua Active Client]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;M2M Lua Active Client&amp;lt;/b&amp;gt; means = SNMP get/set, HTTP get, MQTT from the custom Lua scripts. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1056</id>
		<title>Welcome to NETIO resources &amp; projects &amp; documentation overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1056"/>
		<updated>2025-04-03T07:58:50Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* NETIO unified Open API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 40%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;Interoperability&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
===NETIO unified Open API===&lt;br /&gt;
&lt;br /&gt;
*[[JSON API]] (default enabled)&lt;br /&gt;
&lt;br /&gt;
*[[MQTT-flex]]&lt;br /&gt;
&lt;br /&gt;
*[[NETIO Cloud API]]&lt;br /&gt;
&lt;br /&gt;
*[[HTTP(s) Push - JSON/XML]]&lt;br /&gt;
&lt;br /&gt;
*[[Modbus TCP]]&lt;br /&gt;
&lt;br /&gt;
*[[SNMP]]&lt;br /&gt;
&lt;br /&gt;
*[[Telnet/Kshell]]&lt;br /&gt;
&lt;br /&gt;
*[[URL API]]&lt;br /&gt;
&lt;br /&gt;
*[[XML API]]&lt;br /&gt;
&lt;br /&gt;
*[[MQTT]] (PowerPDU 4C)&lt;br /&gt;
&lt;br /&gt;
*[[SIP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AV drivers for NETIO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''[https://www.netio-products.com/en/partners#BrightSign BrightSign]'''&lt;br /&gt;
*'''DOMOTZ''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[[ELAN]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Crestron '''Crestron''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Control%204 '''Control 4''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#HSYCO '''HSYCO''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Neets%20A/S '''Neets''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#RTI '''RTI''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Savant '''SAVANT''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations from NETIO===&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an22-abacom-profilab-expert-software-controls-netio-power-sockets-and-reads-measurements '''ABACOM''' ProfiLab-Expert]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an33-domoticz-controls-netio-smart-sockets-http-json Domoticz]&lt;br /&gt;
&lt;br /&gt;
*'''Domotz''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[https://forum.fibaro.com/topic/53599-quickapp-netio/ '''Fibaro HC3''']&lt;br /&gt;
 &lt;br /&gt;
*[https://www.netio-products.com/en/partners#Grafana '''Grafana''']&lt;br /&gt;
&lt;br /&gt;
*[[HiveMQ]] (using MQTT-flex)&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an53-loxone-controls-netio-power-sockets-with-url-api-or-modbustcp LOXONE]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an26-ms-azure-and-netio-4x-power-metering-and-output-control-from-a-cloud-service MS Azure]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an41-power-monitoring-over-snmp-in-zabbix-nagios-for-netio-power-sockets '''Nagios'' / '''''&amp;lt;nowiki/&amp;gt;''Zabbix'&amp;lt;nowiki/&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
*'''[[NodeRED]]''' - several examples&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Paessler%20AG '''PRTG - Paessler''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/pixilab/blocks-script/tree/master/driver PIXILAB Blocks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; Community &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
[https://github.com/netioproducts NETIO GitHub - official]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetio PyNetio (Python to control NETIOs)]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetioConf PyNetioConf - python library control/manage NETIO devices ]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples c-sharp-examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/python-netio-discover python-netio-discover]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/php-examples PHP examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/netio-data-collector NETIO data collector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[NETIO UDP Discover]]&lt;br /&gt;
&lt;br /&gt;
[[NETIO UPnP (Universal Plug and Play)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Koukaam/netio-utils/tree/master/actions GitHub - obsolete (Koukaam)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations by Community===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/bitfocus/companion-module-netio-powerbox '''Companion''' module by Bitfocus AS]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/elmicro/fhem_netio_4x_pm '''FHEM''' module by Elmicro]&lt;br /&gt;
&lt;br /&gt;
*[https://grafana.com/grafana/dashboards/12022-netio-power-pdu/ '''Grafana''' dashboard for Prometheus]&lt;br /&gt;
&lt;br /&gt;
*[https://www.home-assistant.io/components/netio/ '''Home Assistant''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
*[https://github.com/jvyoralek/homeassistant-config/tree/master/products/netio HomeAssistant - PowerCable MQTTflex]&lt;br /&gt;
&lt;br /&gt;
*[[HomeAssistant - PowerCable MQTTflex configuration update]]&lt;br /&gt;
&lt;br /&gt;
*[https://peyanski.com/netio-powerdin-4pz-and-home-assistant/ PowerDIN 4PZ smart electricity meter and Home Assistant]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/VerosK/icinga-check-netio-pdu '''Icinga''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin] &lt;br /&gt;
&lt;br /&gt;
*[https://www.jam-software.com/serversentinel/online_manual/EN/index.html?actions_netio230bnetworkpowersocket.html '''Jam-software''' - ServerSentinel]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/stdevel/check_netio '''Nagios plugin''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.instructables.com/id/How-to-Work-With-JSON-in-Node-RED/ '''NodeRED''' access to NETIO 4All]&lt;br /&gt;
&lt;br /&gt;
*[https://jirikuba.github.io/NETIO.SpinaniHDO/ '''NETIO controlled by HDO in Lua''']&lt;br /&gt;
&lt;br /&gt;
*[https://bytehive.gumroad.com/l/playoutbee?layout=profile '''PlayoutBee''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/tomsajan/netio-exporter '''Prometheus''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/st3veV/Netio-OpenHAB '''OpenHAB''' using MQTT]&lt;br /&gt;
&lt;br /&gt;
*[https://groups.google.com/forum/#!topic/openhab/O6psocjU70s '''OpenHAB''' Reading power consumption - HTTP (NETIO4)]&lt;br /&gt;
&lt;br /&gt;
*[https://discourse.ros.org/t/netio-ros-interface/20737 '''ROS''' Robot Operating System integration]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programming examples===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/svartnos/NETIO4-Json-Demo '''C# example''' JSON based device control example]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples/tree/master/netioControllerXML-Stefano '''M2M XML API integration in C#''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/rynr/netio '''Java Control Library''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/imolein/lua-netio '''LUA control Library''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Other 3rd party tools===&lt;br /&gt;
&lt;br /&gt;
*[https://www1.stardraw.com/stardraw2/sd7/features/manufacturer/6f7f9fe5-0026-4922-b15c-d287d3ce3fef '''Stardraw''' Design 7.3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 1em 0 0; border-right: 0px solid gray; width: 60%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;NETIO Conditions &amp;amp; Rules: Local device scripting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;These features are available for all NETIO devices except PowerPDU 4C (LUA is supported there)&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&amp;lt;br /&amp;gt;Check most common practical examples&lt;br /&gt;
&lt;br /&gt;
===Power Analysis Blocks (PAB)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=PAB '''PAB Description''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#RANGE '''PAB - RANGE''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#ZONES '''PAB - ZONES''']&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WatchDog (WDT)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog Description''']&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog_Examples '''WatchDog Examples''']&lt;br /&gt;
**One IP address WatchDog&lt;br /&gt;
**Multiple IP addresses WatchDog with rules&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Rules '''Rules Description''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; NETIO Lua Programming &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Lua is available for PowerPDU 4C device only&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Don't know LUA?===&lt;br /&gt;
====[https://www.lua.org/pil/contents.html Official Lua tutorial]====&lt;br /&gt;
If you are new to Lua and programming as such and if you are eager to learn, this is your starting point. Before you proceed to NETIO Sockets, this [https://www.lua.org/demo.html online environment] will be a good place to test your first scripts.&lt;br /&gt;
====[https://www.lua.org/manual/5.3/ Official Lua manual]====&lt;br /&gt;
Although you won't need everything mentioned here, it is worth to peek here from time to time to grasp the concepts of effective Lua programming.&lt;br /&gt;
&lt;br /&gt;
===Lua in NETIO===&lt;br /&gt;
If you already know Lua, just keep in mind that &amp;lt;b&amp;gt;NETIO Lua loops are limited to 32k cycles&amp;lt;/b&amp;gt; and all &amp;lt;b&amp;gt;numbers are integers, not decimals&amp;lt;/b&amp;gt; like in standard Lua.&lt;br /&gt;
====[[Lua basics for other language programmers]]====&lt;br /&gt;
A quick jump into NETIO Lua programming if you mastered another programming language. It's simple...&lt;br /&gt;
====[[NETIO Lua Tips &amp;amp; Philosophy]]====&lt;br /&gt;
Explanation of starting LUA scripts in NETIO devices and some tips how to hack NETIO to doing what you want.&lt;br /&gt;
&lt;br /&gt;
====[[NETIO Specific Reference manual]]====&lt;br /&gt;
If you can already code in Lua, NETIO-specific Lua functions is your main guide to programing NETIO Sockets.&lt;br /&gt;
&lt;br /&gt;
====[[Examples &amp;amp; Aplication notes]]====&lt;br /&gt;
Aplication notes for devices supporting LUA programming. Example configurations downloads and Script programming explanation with direct links to reference&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;[https://www.netio-products.com/en/glossary/m2m-active-client M2M Lua Active Client]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;M2M Lua Active Client&amp;lt;/b&amp;gt; means = SNMP get/set, HTTP get, MQTT from the custom Lua scripts. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1055</id>
		<title>Welcome to NETIO resources &amp; projects &amp; documentation overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1055"/>
		<updated>2024-12-02T15:09:00Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 40%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;Interoperability&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
===NETIO unified Open API===&lt;br /&gt;
&lt;br /&gt;
*[[JSON API]] (default enabled)&lt;br /&gt;
&lt;br /&gt;
*[[MQTT-flex]]&lt;br /&gt;
&lt;br /&gt;
*[[NETIO Cloud API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[HTTP(s) Push - JSON/XML]]&lt;br /&gt;
&lt;br /&gt;
*[[Modbus TCP]]&lt;br /&gt;
&lt;br /&gt;
*[[SNMP]]&lt;br /&gt;
&lt;br /&gt;
*[[Telnet/Kshell]]&lt;br /&gt;
&lt;br /&gt;
*[[URL API]]&lt;br /&gt;
&lt;br /&gt;
*[[XML API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[MQTT]] (PowerPDU 4C)&lt;br /&gt;
&lt;br /&gt;
*[[SIP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AV drivers for NETIO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''[https://www.netio-products.com/en/partners#BrightSign BrightSign]'''&lt;br /&gt;
*'''DOMOTZ''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[[ELAN]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Crestron '''Crestron''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Control%204 '''Control 4''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#HSYCO '''HSYCO''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Neets%20A/S '''Neets''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#RTI '''RTI''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Savant '''SAVANT''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations from NETIO===&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an22-abacom-profilab-expert-software-controls-netio-power-sockets-and-reads-measurements '''ABACOM''' ProfiLab-Expert]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an33-domoticz-controls-netio-smart-sockets-http-json Domoticz]&lt;br /&gt;
&lt;br /&gt;
*'''Domotz''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[https://forum.fibaro.com/topic/53599-quickapp-netio/ '''Fibaro HC3''']&lt;br /&gt;
 &lt;br /&gt;
*[https://www.netio-products.com/en/partners#Grafana '''Grafana''']&lt;br /&gt;
&lt;br /&gt;
*[[HiveMQ]] (using MQTT-flex)&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an53-loxone-controls-netio-power-sockets-with-url-api-or-modbustcp LOXONE]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an26-ms-azure-and-netio-4x-power-metering-and-output-control-from-a-cloud-service MS Azure]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an41-power-monitoring-over-snmp-in-zabbix-nagios-for-netio-power-sockets '''Nagios'' / '''''&amp;lt;nowiki/&amp;gt;''Zabbix'&amp;lt;nowiki/&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
*'''[[NodeRED]]''' - several examples&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Paessler%20AG '''PRTG - Paessler''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/pixilab/blocks-script/tree/master/driver PIXILAB Blocks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; Community &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
[https://github.com/netioproducts NETIO GitHub - official]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetio PyNetio (Python to control NETIOs)]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetioConf PyNetioConf - python library control/manage NETIO devices ]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples c-sharp-examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/python-netio-discover python-netio-discover]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/php-examples PHP examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/netio-data-collector NETIO data collector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[NETIO UDP Discover]]&lt;br /&gt;
&lt;br /&gt;
[[NETIO UPnP (Universal Plug and Play)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Koukaam/netio-utils/tree/master/actions GitHub - obsolete (Koukaam)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations by Community===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/bitfocus/companion-module-netio-powerbox '''Companion''' module by Bitfocus AS]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/elmicro/fhem_netio_4x_pm '''FHEM''' module by Elmicro]&lt;br /&gt;
&lt;br /&gt;
*[https://grafana.com/grafana/dashboards/12022-netio-power-pdu/ '''Grafana''' dashboard for Prometheus]&lt;br /&gt;
&lt;br /&gt;
*[https://www.home-assistant.io/components/netio/ '''Home Assistant''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
*[https://github.com/jvyoralek/homeassistant-config/tree/master/products/netio HomeAssistant - PowerCable MQTTflex]&lt;br /&gt;
&lt;br /&gt;
*[[HomeAssistant - PowerCable MQTTflex configuration update]]&lt;br /&gt;
&lt;br /&gt;
*[https://peyanski.com/netio-powerdin-4pz-and-home-assistant/ PowerDIN 4PZ smart electricity meter and Home Assistant]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/VerosK/icinga-check-netio-pdu '''Icinga''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin] &lt;br /&gt;
&lt;br /&gt;
*[https://www.jam-software.com/serversentinel/online_manual/EN/index.html?actions_netio230bnetworkpowersocket.html '''Jam-software''' - ServerSentinel]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/stdevel/check_netio '''Nagios plugin''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.instructables.com/id/How-to-Work-With-JSON-in-Node-RED/ '''NodeRED''' access to NETIO 4All]&lt;br /&gt;
&lt;br /&gt;
*[https://jirikuba.github.io/NETIO.SpinaniHDO/ '''NETIO controlled by HDO in Lua''']&lt;br /&gt;
&lt;br /&gt;
*[https://bytehive.gumroad.com/l/playoutbee?layout=profile '''PlayoutBee''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/tomsajan/netio-exporter '''Prometheus''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/st3veV/Netio-OpenHAB '''OpenHAB''' using MQTT]&lt;br /&gt;
&lt;br /&gt;
*[https://groups.google.com/forum/#!topic/openhab/O6psocjU70s '''OpenHAB''' Reading power consumption - HTTP (NETIO4)]&lt;br /&gt;
&lt;br /&gt;
*[https://discourse.ros.org/t/netio-ros-interface/20737 '''ROS''' Robot Operating System integration]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programming examples===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/svartnos/NETIO4-Json-Demo '''C# example''' JSON based device control example]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples/tree/master/netioControllerXML-Stefano '''M2M XML API integration in C#''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/rynr/netio '''Java Control Library''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/imolein/lua-netio '''LUA control Library''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Other 3rd party tools===&lt;br /&gt;
&lt;br /&gt;
*[https://www1.stardraw.com/stardraw2/sd7/features/manufacturer/6f7f9fe5-0026-4922-b15c-d287d3ce3fef '''Stardraw''' Design 7.3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 1em 0 0; border-right: 0px solid gray; width: 60%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;NETIO Conditions &amp;amp; Rules: Local device scripting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;These features are available for all NETIO devices except PowerPDU 4C (LUA is supported there)&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&amp;lt;br /&amp;gt;Check most common practical examples&lt;br /&gt;
&lt;br /&gt;
===Power Analysis Blocks (PAB)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=PAB '''PAB Description''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#RANGE '''PAB - RANGE''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#ZONES '''PAB - ZONES''']&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WatchDog (WDT)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog Description''']&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog_Examples '''WatchDog Examples''']&lt;br /&gt;
**One IP address WatchDog&lt;br /&gt;
**Multiple IP addresses WatchDog with rules&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Rules '''Rules Description''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; NETIO Lua Programming &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Lua is available for PowerPDU 4C device only&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Don't know LUA?===&lt;br /&gt;
====[https://www.lua.org/pil/contents.html Official Lua tutorial]====&lt;br /&gt;
If you are new to Lua and programming as such and if you are eager to learn, this is your starting point. Before you proceed to NETIO Sockets, this [https://www.lua.org/demo.html online environment] will be a good place to test your first scripts.&lt;br /&gt;
====[https://www.lua.org/manual/5.3/ Official Lua manual]====&lt;br /&gt;
Although you won't need everything mentioned here, it is worth to peek here from time to time to grasp the concepts of effective Lua programming.&lt;br /&gt;
&lt;br /&gt;
===Lua in NETIO===&lt;br /&gt;
If you already know Lua, just keep in mind that &amp;lt;b&amp;gt;NETIO Lua loops are limited to 32k cycles&amp;lt;/b&amp;gt; and all &amp;lt;b&amp;gt;numbers are integers, not decimals&amp;lt;/b&amp;gt; like in standard Lua.&lt;br /&gt;
====[[Lua basics for other language programmers]]====&lt;br /&gt;
A quick jump into NETIO Lua programming if you mastered another programming language. It's simple...&lt;br /&gt;
====[[NETIO Lua Tips &amp;amp; Philosophy]]====&lt;br /&gt;
Explanation of starting LUA scripts in NETIO devices and some tips how to hack NETIO to doing what you want.&lt;br /&gt;
&lt;br /&gt;
====[[NETIO Specific Reference manual]]====&lt;br /&gt;
If you can already code in Lua, NETIO-specific Lua functions is your main guide to programing NETIO Sockets.&lt;br /&gt;
&lt;br /&gt;
====[[Examples &amp;amp; Aplication notes]]====&lt;br /&gt;
Aplication notes for devices supporting LUA programming. Example configurations downloads and Script programming explanation with direct links to reference&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;[https://www.netio-products.com/en/glossary/m2m-active-client M2M Lua Active Client]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;M2M Lua Active Client&amp;lt;/b&amp;gt; means = SNMP get/set, HTTP get, MQTT from the custom Lua scripts. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1054</id>
		<title>Welcome to NETIO resources &amp; projects &amp; documentation overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Welcome_to_NETIO_resources_%26_projects_%26_documentation_overview&amp;diff=1054"/>
		<updated>2024-12-02T15:06:49Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* Tools */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 40%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;Interoperability&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
===NETIO unified Open API===&lt;br /&gt;
&lt;br /&gt;
*[[JSON API]] (default enabled)&lt;br /&gt;
&lt;br /&gt;
*[[MQTT-flex]]&lt;br /&gt;
&lt;br /&gt;
*[[NETIO Cloud API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[HTTP(s) Push - JSON/XML]]&lt;br /&gt;
&lt;br /&gt;
*[[Modbus TCP]]&lt;br /&gt;
&lt;br /&gt;
*[[SNMP]]&lt;br /&gt;
&lt;br /&gt;
*[[Telnet/Kshell]]&lt;br /&gt;
&lt;br /&gt;
*[[URL API]]&lt;br /&gt;
&lt;br /&gt;
*[[XML API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[MQTT]] (PowerPDU 4C)&lt;br /&gt;
&lt;br /&gt;
*[[SIP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===AV drivers for NETIO===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''[https://www.netio-products.com/en/partners#BrightSign BrightSign]'''&lt;br /&gt;
*'''DOMOTZ''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[[ELAN]]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Crestron '''Crestron''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Control%204 '''Control 4''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#HSYCO '''HSYCO''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Neets%20A/S '''Neets''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#RTI '''RTI''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Savant '''SAVANT''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations from NETIO===&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an22-abacom-profilab-expert-software-controls-netio-power-sockets-and-reads-measurements '''ABACOM''' ProfiLab-Expert]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an33-domoticz-controls-netio-smart-sockets-http-json Domoticz]&lt;br /&gt;
&lt;br /&gt;
*'''Domotz''' (coming soon)&lt;br /&gt;
&lt;br /&gt;
*[https://forum.fibaro.com/topic/53599-quickapp-netio/ '''Fibaro HC3''']&lt;br /&gt;
 &lt;br /&gt;
*[https://www.netio-products.com/en/partners#Grafana '''Grafana''']&lt;br /&gt;
&lt;br /&gt;
*[[HiveMQ]] (using MQTT-flex)&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an53-loxone-controls-netio-power-sockets-with-url-api-or-modbustcp LOXONE]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an26-ms-azure-and-netio-4x-power-metering-and-output-control-from-a-cloud-service MS Azure]&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/application-notes/an41-power-monitoring-over-snmp-in-zabbix-nagios-for-netio-power-sockets '''Nagios'' / '''''&amp;lt;nowiki/&amp;gt;''Zabbix'&amp;lt;nowiki/&amp;gt;'']&lt;br /&gt;
&lt;br /&gt;
*'''[[NodeRED]]''' - several examples&lt;br /&gt;
&lt;br /&gt;
*[https://www.netio-products.com/en/partners#Paessler%20AG '''PRTG - Paessler''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/pixilab/blocks-script/tree/master/driver PIXILAB Blocks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; Community &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
[https://github.com/netioproducts NETIO GitHub - official]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetio PyNetio (Python to control NETIOs)]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/PyNetioConf] PyNetioConf - python library control/manage NETIO devices &lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples c-sharp-examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/python-netio-discover python-netio-discover]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/php-examples PHP examples]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/netio-data-collector NETIO data collector]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[NETIO UDP Discover]]&lt;br /&gt;
&lt;br /&gt;
[[NETIO UPnP (Universal Plug and Play)]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Koukaam/netio-utils/tree/master/actions GitHub - obsolete (Koukaam)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Integrations by Community===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/bitfocus/companion-module-netio-powerbox '''Companion''' module by Bitfocus AS]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/elmicro/fhem_netio_4x_pm '''FHEM''' module by Elmicro]&lt;br /&gt;
&lt;br /&gt;
*[https://grafana.com/grafana/dashboards/12022-netio-power-pdu/ '''Grafana''' dashboard for Prometheus]&lt;br /&gt;
&lt;br /&gt;
*[https://www.home-assistant.io/components/netio/ '''Home Assistant''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;UL&amp;gt;&lt;br /&gt;
*[https://github.com/jvyoralek/homeassistant-config/tree/master/products/netio HomeAssistant - PowerCable MQTTflex]&lt;br /&gt;
&lt;br /&gt;
*[[HomeAssistant - PowerCable MQTTflex configuration update]]&lt;br /&gt;
&lt;br /&gt;
*[https://peyanski.com/netio-powerdin-4pz-and-home-assistant/ PowerDIN 4PZ smart electricity meter and Home Assistant]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/VerosK/icinga-check-netio-pdu '''Icinga''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin] &lt;br /&gt;
&lt;br /&gt;
*[https://www.jam-software.com/serversentinel/online_manual/EN/index.html?actions_netio230bnetworkpowersocket.html '''Jam-software''' - ServerSentinel]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/theone1984/netio-jenkins '''Jenkins''' plugin]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/stdevel/check_netio '''Nagios plugin''']&lt;br /&gt;
&lt;br /&gt;
*[https://www.instructables.com/id/How-to-Work-With-JSON-in-Node-RED/ '''NodeRED''' access to NETIO 4All]&lt;br /&gt;
&lt;br /&gt;
*[https://jirikuba.github.io/NETIO.SpinaniHDO/ '''NETIO controlled by HDO in Lua''']&lt;br /&gt;
&lt;br /&gt;
*[https://bytehive.gumroad.com/l/playoutbee?layout=profile '''PlayoutBee''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/tomsajan/netio-exporter '''Prometheus''' integration]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/st3veV/Netio-OpenHAB '''OpenHAB''' using MQTT]&lt;br /&gt;
&lt;br /&gt;
*[https://groups.google.com/forum/#!topic/openhab/O6psocjU70s '''OpenHAB''' Reading power consumption - HTTP (NETIO4)]&lt;br /&gt;
&lt;br /&gt;
*[https://discourse.ros.org/t/netio-ros-interface/20737 '''ROS''' Robot Operating System integration]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Programming examples===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/svartnos/NETIO4-Json-Demo '''C# example''' JSON based device control example]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/netioproducts/c-sharp-examples/tree/master/netioControllerXML-Stefano '''M2M XML API integration in C#''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/rynr/netio '''Java Control Library''']&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/imolein/lua-netio '''LUA control Library''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
===Other 3rd party tools===&lt;br /&gt;
&lt;br /&gt;
*[https://www1.stardraw.com/stardraw2/sd7/features/manufacturer/6f7f9fe5-0026-4922-b15c-d287d3ce3fef '''Stardraw''' Design 7.3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline-block; padding: 0 1em 0 0; border-right: 0px solid gray; width: 60%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; white-space: nowrap;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; margin: 0 1em 0 1em; border-left: 0px solid gray; width: 45%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt;NETIO Conditions &amp;amp; Rules: Local device scripting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;These features are available for all NETIO devices except PowerPDU 4C (LUA is supported there)&amp;lt;/i&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&amp;lt;br /&amp;gt;Check most common practical examples&lt;br /&gt;
&lt;br /&gt;
===Power Analysis Blocks (PAB)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=PAB '''PAB Description''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#RANGE '''PAB - RANGE''']&lt;br /&gt;
**[https://wiki.netio-products.com/index.php?title=PAB#ZONES '''PAB - ZONES''']&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WatchDog (WDT)===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog Description''']&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Watchdog_Examples '''WatchDog Examples''']&lt;br /&gt;
**One IP address WatchDog&lt;br /&gt;
**Multiple IP addresses WatchDog with rules&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules===&lt;br /&gt;
*[https://wiki.netio-products.com/index.php?title=Rules '''Rules Description''']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #eaf6f2; display: inline-block; padding: 0 0 0 0; border-left: 0px solid gray; width: 50%; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h2 style=&amp;quot;background: #005f41; color: #FFF; margin: 0 0 0 0; padding: 0 1em 0 1em;&amp;quot;&amp;gt; NETIO Lua Programming &amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot; display: inline-block; padding: 0 1em 0 1em;text-align: left; vertical-align: top; white-space: normal;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Lua is available for PowerPDU 4C device only&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Don't know LUA?===&lt;br /&gt;
====[https://www.lua.org/pil/contents.html Official Lua tutorial]====&lt;br /&gt;
If you are new to Lua and programming as such and if you are eager to learn, this is your starting point. Before you proceed to NETIO Sockets, this [https://www.lua.org/demo.html online environment] will be a good place to test your first scripts.&lt;br /&gt;
====[https://www.lua.org/manual/5.3/ Official Lua manual]====&lt;br /&gt;
Although you won't need everything mentioned here, it is worth to peek here from time to time to grasp the concepts of effective Lua programming.&lt;br /&gt;
&lt;br /&gt;
===Lua in NETIO===&lt;br /&gt;
If you already know Lua, just keep in mind that &amp;lt;b&amp;gt;NETIO Lua loops are limited to 32k cycles&amp;lt;/b&amp;gt; and all &amp;lt;b&amp;gt;numbers are integers, not decimals&amp;lt;/b&amp;gt; like in standard Lua.&lt;br /&gt;
====[[Lua basics for other language programmers]]====&lt;br /&gt;
A quick jump into NETIO Lua programming if you mastered another programming language. It's simple...&lt;br /&gt;
====[[NETIO Lua Tips &amp;amp; Philosophy]]====&lt;br /&gt;
Explanation of starting LUA scripts in NETIO devices and some tips how to hack NETIO to doing what you want.&lt;br /&gt;
&lt;br /&gt;
====[[NETIO Specific Reference manual]]====&lt;br /&gt;
If you can already code in Lua, NETIO-specific Lua functions is your main guide to programing NETIO Sockets.&lt;br /&gt;
&lt;br /&gt;
====[[Examples &amp;amp; Aplication notes]]====&lt;br /&gt;
Aplication notes for devices supporting LUA programming. Example configurations downloads and Script programming explanation with direct links to reference&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;[https://www.netio-products.com/en/glossary/m2m-active-client M2M Lua Active Client]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;M2M Lua Active Client&amp;lt;/b&amp;gt; means = SNMP get/set, HTTP get, MQTT from the custom Lua scripts. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1053</id>
		<title>PAB</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1053"/>
		<updated>2024-07-29T08:42:15Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PAB (Power Analysis Block) is set of Condition &amp;amp; Rules (CR). It's set of most common functions available for NETIO devices. Based on each '''Condition''', subsequent [https://wiki.netio-products.com/index.php?title=Rules '''Rules'''] can be executed. &lt;br /&gt;
User friendly examples are prepared as [https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''Rules''' can be triggered based on a '''Condition''' - analysis of the state of one or more variables:&lt;br /&gt;
* Current [mA]&lt;br /&gt;
* Energy [Wh]&lt;br /&gt;
* Load [W]&lt;br /&gt;
* Power Factor&lt;br /&gt;
* S0 pulses&lt;br /&gt;
* TEMP [°C], [°F] - available from FW 5.0.3+&lt;br /&gt;
&lt;br /&gt;
Rules can then perform several actions described in section [https://wiki.netio-products.com/index.php?title=Rules '''Rules''']. &lt;br /&gt;
Every PAB is internally evaluated as having a discrete state which can be used as an input to a Rule mentioned above. State value is different for each type of PAB (described below). This state is also available in JSON protocol and therefore can be read externally.&lt;br /&gt;
&lt;br /&gt;
There are two types of PABs available: '''RANGE''' &amp;amp; '''ZONES'''. Each type has different states and configuration options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= RANGE =&lt;br /&gt;
True/False-based evaluation. Detects whether a monitored value lies in specified interval (range) for a period of time. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt;.&lt;br /&gt;
Interval is specified by lower &amp;lt;code&amp;gt;lowerBound&amp;lt;/code&amp;gt; and upper &amp;lt;code&amp;gt;upperBound&amp;lt;/code&amp;gt; boundaries. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; if a variable defined in &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; lies within for a period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Configuration Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| RANGE &lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER/TEMP)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| [s] Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| lowerBound &lt;br /&gt;
| int &lt;br /&gt;
| lower bound of the monitored value &lt;br /&gt;
|-&lt;br /&gt;
| upperBound &lt;br /&gt;
| int &lt;br /&gt;
| upper bound of the monitored value &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Immediate evaluation ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; immediately as Output 1 '''Current''' value appears '''between 100 and 200 mA'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 0&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Evaluation with delay ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; when Output 1 '''Load''' is '''between 200 and 300 Watts for 5s'''.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 300,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 5&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ZONES =&lt;br /&gt;
Opposed from a previous type, ZONE-type PAB detects, whether a monitored variable finds itself in a specified zone. State of PAB indicates what zone number (index) is the measured variable currently in. Zones are defined by their &amp;lt;code&amp;gt;thresholds&amp;lt;/code&amp;gt; (lower bounds) and there must be at least one threshold specified.&lt;br /&gt;
Monitored value must be present in a defined interval for period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| ZONES&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER/TEMP)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| '''[s]''' Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| thresholds&lt;br /&gt;
| list of integers &lt;br /&gt;
| lower-bounds of individual zones intervals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
PAB is evaluated according to the specified zones when the Output 2 '''Current''' value is in one of the zones for 10s.&lt;br /&gt;
Zone numbers are as following:&lt;br /&gt;
* '''0''': 0 - 49 mA&lt;br /&gt;
* '''1''': 50 - 99 mA&lt;br /&gt;
* '''2''': 100 - 149 mA&lt;br /&gt;
* '''3''': 150 - 199 mA&lt;br /&gt;
* '''4''': 200+ mA&lt;br /&gt;
&lt;br /&gt;
Eg: If the Current value is 130mA for at least 10s, PAB is evaluated as 2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    50,&lt;br /&gt;
    100,&lt;br /&gt;
    150,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DAYLIGHT (sunrise / sunset) &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Enables launching actions based on sunrise / sunset of current place.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| DAYLIGHT&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| longitude&lt;br /&gt;
| str &amp;quot;14.4129433E&amp;quot; OR int -73.8390597&lt;br /&gt;
| East/West coordinates&lt;br /&gt;
|-&lt;br /&gt;
| latitude&lt;br /&gt;
| str &amp;quot;50.0058144N&amp;quot; OR int -16.5237353&lt;br /&gt;
| North/South coordinates&lt;br /&gt;
|-&lt;br /&gt;
| altitude&lt;br /&gt;
| Number of meters above sea level&lt;br /&gt;
| 8848&lt;br /&gt;
|-&lt;br /&gt;
| sunriseDelay&lt;br /&gt;
| int [min]&lt;br /&gt;
| Delay of PAB activation/deactivation to sunrise&lt;br /&gt;
|-&lt;br /&gt;
| sunsetDelay&lt;br /&gt;
| int [min] &lt;br /&gt;
| Delay of PAB activation/deactivation to sunset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== PAB ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: -16.5237353,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: 28.4162475,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1052</id>
		<title>PAB</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1052"/>
		<updated>2024-07-29T08:41:37Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* Configuration Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PAB (Power Analysis Block) is set of Condition &amp;amp; Rules (CR). It's set of most common functions available for NETIO devices. Based on each '''Condition''', subsequent [https://wiki.netio-products.com/index.php?title=Rules '''Rules'''] can be executed. &lt;br /&gt;
User friendly examples are prepared as [https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''Rules''' can be triggered based on a '''Condition''' - analysis of the state of one or more variables:&lt;br /&gt;
* Current [mA]&lt;br /&gt;
* Energy [Wh]&lt;br /&gt;
* Load [W]&lt;br /&gt;
* Power Factor&lt;br /&gt;
* S0 pulses&lt;br /&gt;
* TEMP [°C], [°F] - available from FW 5.0.3+&lt;br /&gt;
&lt;br /&gt;
Rules can then perform several actions described in section [https://wiki.netio-products.com/index.php?title=Rules '''Rules''']. &lt;br /&gt;
Every PAB is internally evaluated as having a discrete state which can be used as an input to a Rule mentioned above. State value is different for each type of PAB (described below). This state is also available in JSON protocol and therefore can be read externally.&lt;br /&gt;
&lt;br /&gt;
There are two types of PABs available: '''RANGE''' &amp;amp; '''ZONES'''. Each type has different states and configuration options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= RANGE =&lt;br /&gt;
True/False-based evaluation. Detects whether a monitored value lies in specified interval (range) for a period of time. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt;.&lt;br /&gt;
Interval is specified by lower &amp;lt;code&amp;gt;lowerBound&amp;lt;/code&amp;gt; and upper &amp;lt;code&amp;gt;upperBound&amp;lt;/code&amp;gt; boundaries. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; if a variable defined in &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; lies within for a period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Configuration Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| RANGE &lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER/TEMP)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| [s] Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| lowerBound &lt;br /&gt;
| int &lt;br /&gt;
| lower bound of the monitored value &lt;br /&gt;
|-&lt;br /&gt;
| upperBound &lt;br /&gt;
| int &lt;br /&gt;
| upper bound of the monitored value &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Immediate evaluation ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; immediately as Output 1 '''Current''' value appears '''between 100 and 200 mA'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 0&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Evaluation with delay ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; when Output 1 '''Load''' is '''between 200 and 300 Watts for 5s'''.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 300,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 5&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ZONES =&lt;br /&gt;
Opposed from a previous type, ZONE-type PAB detects, whether a monitored variable finds itself in a specified zone. State of PAB indicates what zone number (index) is the measured variable currently in. Zones are defined by their &amp;lt;code&amp;gt;thresholds&amp;lt;/code&amp;gt; (lower bounds) and there must be at least one threshold specified.&lt;br /&gt;
Monitored value must be present in a defined interval for period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| ZONES&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| '''[s]''' Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| thresholds&lt;br /&gt;
| list of integers &lt;br /&gt;
| lower-bounds of individual zones intervals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
PAB is evaluated according to the specified zones when the Output 2 '''Current''' value is in one of the zones for 10s.&lt;br /&gt;
Zone numbers are as following:&lt;br /&gt;
* '''0''': 0 - 49 mA&lt;br /&gt;
* '''1''': 50 - 99 mA&lt;br /&gt;
* '''2''': 100 - 149 mA&lt;br /&gt;
* '''3''': 150 - 199 mA&lt;br /&gt;
* '''4''': 200+ mA&lt;br /&gt;
&lt;br /&gt;
Eg: If the Current value is 130mA for at least 10s, PAB is evaluated as 2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    50,&lt;br /&gt;
    100,&lt;br /&gt;
    150,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DAYLIGHT (sunrise / sunset) &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Enables launching actions based on sunrise / sunset of current place.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| DAYLIGHT&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| longitude&lt;br /&gt;
| str &amp;quot;14.4129433E&amp;quot; OR int -73.8390597&lt;br /&gt;
| East/West coordinates&lt;br /&gt;
|-&lt;br /&gt;
| latitude&lt;br /&gt;
| str &amp;quot;50.0058144N&amp;quot; OR int -16.5237353&lt;br /&gt;
| North/South coordinates&lt;br /&gt;
|-&lt;br /&gt;
| altitude&lt;br /&gt;
| Number of meters above sea level&lt;br /&gt;
| 8848&lt;br /&gt;
|-&lt;br /&gt;
| sunriseDelay&lt;br /&gt;
| int [min]&lt;br /&gt;
| Delay of PAB activation/deactivation to sunrise&lt;br /&gt;
|-&lt;br /&gt;
| sunsetDelay&lt;br /&gt;
| int [min] &lt;br /&gt;
| Delay of PAB activation/deactivation to sunset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== PAB ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: -16.5237353,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: 28.4162475,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1051</id>
		<title>Rules Complete Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1051"/>
		<updated>2024-07-29T07:18:33Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* Temperature out of limit  - Output1 ON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The concept of NETIO Conditions (PAB &amp;amp; WatchDog) &amp;amp; Rules is a set of prepared detections (Conditions) and Rules that act upon them. They are implemented directly in NETIO PDU devices. &lt;br /&gt;
&lt;br /&gt;
== CR01 - WatchDog (ping) to 1 IP address | default in FW 3.2.3 ==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
The ping in this example is sent every 60s and waits 5s for the device to respond. If the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and restarts (ACTION: 2 = SHORT OFF) device connected to first output. After restart, it waits 120 seconds and starts monitoring again. If the device does not respond, WatchDog remains in ERROR state until next successful ping.&lt;br /&gt;
&lt;br /&gt;
===WatchDog definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR01_WDT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.5&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR01_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;WDT/CR01_WDT/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR02 - Digital Inputs  (Push button to Toggle Outputs 1 and 2) | default in FW 3.2.3 ==&lt;br /&gt;
&lt;br /&gt;
Rule is used for managing outputs in response to change of Digital Inputs (DI) state. Rule monitors state of first DI. When DI switches from OFF (0) to ON (1), Rule switches (toggles) Outputs 1 &amp;amp; 2 to their opposite states (ACTION 4 = TOGGLE).&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR02_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR03 - Load Watchdog (Restart device if it's more than 2 minutes in IDLE mode) | default in FW 3.2.3 ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 2 minutes, it restarts (ACTION 2 = SHORT OFF) the output.&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR03_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 120&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR03_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR03_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR04 - Load Watchdog with alarm to Cloud ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 30 minutes, it restarts (ACTION 2 = SHORT OFF) the output. In addition, it triggers an alarm in NETIO Cloud, which sends a notification to specified email address.&lt;br /&gt;
This example needs a NETIO Cloud account with Premium version active for first output. There also has to be email notification enabled for the output.&lt;br /&gt;
&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart and sends alarm to Cloud.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR04_PAB'''&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR04_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR04_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR05 - Load Watchdog with zones (indicate OFF / IDLE / RUN mode by switched on output)==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. Measured load is then classified to several zones defined with thresholds (limit values). Depending on the zone in which the measured load is currently located, different actions can be triggered. Load value has to be between defined threshold for at least 10seconds in order to be placed to respective zone.&lt;br /&gt;
Example is composed of one PAB that classifies the zones and three Rules for 3 separate actions. Actions do the following:&lt;br /&gt;
* Output 1 load lower than 1W: Output 2 = ON&lt;br /&gt;
* Output 1 load between 1-20W: Output 3 = ON&lt;br /&gt;
* Output 1 load between 20-200W: Output 4 = ON&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR05_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    1,&lt;br /&gt;
    20,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules definitions===&lt;br /&gt;
&lt;br /&gt;
Rule 1 name: '''CR05_RULE_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/NR05_PAB/ZONE&amp;quot;: 0&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 2 name: '''CR05_RULE_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 3 name: '''CR05_RULE_3'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 2&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR06 - WatchDog for 2 IPs (Verify IP connectivity outage with 2 IPs)==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
In this example, we monitor two IPs and we want to restart device connected to Output 1 if none of the addresses reply.&lt;br /&gt;
The ping for both IPs is sent every 30s and waits 5s for device to respond. There are 5 consecutive timeouts tolerated before the ping is considered as failed. When the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and remains in ERROR state.&lt;br /&gt;
&lt;br /&gt;
In case both of the defined WatchDogs are in ERROR state, the Rule is triggered which then restarts Output 1.&lt;br /&gt;
&lt;br /&gt;
===WatchDogs definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.51&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.52&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR06_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_1/FAIL&amp;quot;: true,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_2/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR07 - Synchronized outputs states during working hours ==&lt;br /&gt;
Rule keeps track of first output state and when it changes, it switches output 2 to the same state. However, we want this synchronization only to work during working hours. We define the time with Schedule functionality and use it as a filter (mask) in Rules. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR07_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
[[File:NR07_Schedule.png|NR070 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR07_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR07_SCHEDULE/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR08 - Load Watchdog -&amp;gt; Turn output ON after period of time ==&lt;br /&gt;
&lt;br /&gt;
In this example we want to measure load on output 1 and indicate when the power is abnormally low for a period of time by switching device on Output 2 ON (could be control light, sound alarm etc.).&lt;br /&gt;
&lt;br /&gt;
In PAB we define indication for low power usage (1-20W) that is measured for period of 30 minutes (1800 seconds).&lt;br /&gt;
In Rule we define switching Output 2 = ON (ACTION 1 = TURN ON) based on fulfilled PAB condition. This set up counts with human interaction after the Rule action gets processed. (e.g. restarting/replacing device on Output 1 and turning Output 2 OFF).&lt;br /&gt;
It is possible to alter this behavior in such a way that the control light (Output 2) turns automatically OFF when load on Output 1 returns to standard values, i.e. higher than 20W (device gets repaired/replaced) or drops to 0W (device was removed or Output 1 turned OFF). This setup is defined in Rule '''NR08_ALT'''&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR08_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE_ALT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR09 - Digital Inputs with Schedule ==&lt;br /&gt;
&lt;br /&gt;
Examples shows usage when we want to detect switching of Digital Input to ON state (1) but to (not) react only during specified hours (e.g. outside of working hours).&lt;br /&gt;
Reaction hours are defined with Schedule functionality. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR09_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR09_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR09_SCHEDULE/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR10 - TURN OFF Output 1 before midnight ==&lt;br /&gt;
Rule in a combination with Schedule can be used to ensure a specified output will be turned off at the end of the day (or any other time).&lt;br /&gt;
Schedule in this application is '''NOT''' assigned to the output and acts only as a &amp;quot;trigger&amp;quot; for launching the Rule action.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''off_before_midnight'''&lt;br /&gt;
&lt;br /&gt;
Schedule configuration: Schedule is configured to have '''intervals every day from 23:59 to 24:00'''. In this configuration, the output turns of at 23:59.&lt;br /&gt;
&lt;br /&gt;
[[File:cr10_schedule.png|CR10 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR10_RULE'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/off_before_midnight/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR11 - Total load (8QS)==&lt;br /&gt;
CR11_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/TOTAL/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 3&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/total_outputs/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR12 - Negative load ==&lt;br /&gt;
CR12_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: -400,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 2&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/negative/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CR13 - Actions based on daylight &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Turns output ON/OFF based on sunrise/sunset times of set location.&lt;br /&gt;
In this example, output 1 gets turned on one hour before (-60 minutes) sunrise and turns off one hour (60 minutes) after sunset. Location is se for NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level.&lt;br /&gt;
&lt;br /&gt;
=== PAB definition ===&lt;br /&gt;
PAB name: '''CR13_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: -60,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: 60&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR13_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR14 - Actions based on Power-UP &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;== &lt;br /&gt;
&lt;br /&gt;
This example describes rule that evaluates after device start-up. Generally, there are 2 options for setting up conditions: &lt;br /&gt;
* SYSTEM/DEVICE_POWER_UP - device boot after power-cut&lt;br /&gt;
&lt;br /&gt;
Condition in rule description below reacts to device boot after power-cut. When device first starts after regaining power, it sends alarm to output 1 in NETIO Cloud service.&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR14_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR15 - Sunrise/sunset addaptive schedule with deep night off  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.1+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Control output ON/OFF based on sunrise/sunset times of set location and combine it with standard schedule using rules.&lt;br /&gt;
&lt;br /&gt;
In this example, output 1 gets turned on every day at 6:00 and switch off 30 minutes after sunrise and gets on again 30 minutes before sunset and turns off at midnight. This is an example of combination PAB output with standard schedule and mask the result of PAB with intervals defined in schedule.&lt;br /&gt;
&lt;br /&gt;
Following combination creates dynamic variable input with static scheduler overlay and the behaviour can be simply chosen by logical equations.&lt;br /&gt;
&lt;br /&gt;
=== 1. Configure schedule ===&lt;br /&gt;
Create a schedule with name &amp;quot;christmas_off&amp;quot; and create intervals 00:00 to 06:00 every day. No need to activate the scheduler for any output. Just define it.&lt;br /&gt;
&lt;br /&gt;
[[File:CR15 schedule christmas off.png]]&lt;br /&gt;
&lt;br /&gt;
=== 2. Create sunrise/sunset PAB ===&lt;br /&gt;
&lt;br /&gt;
Following PAB will have &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; result during the day between sunrise with 30 minutes delay and 30 minutes before sunset set for location of NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level. This result will be used in condition in rules to detect sunrise and sunset.&lt;br /&gt;
&lt;br /&gt;
PAB name: '''daylight'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -30&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create RULE for output ON ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be enabled (ON). It is combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When is night ( day is false = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: false,&amp;lt;/code&amp;gt;) and in paralel schedule is not active (set to be off = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to ON &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outON'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: false,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create RULE for output OFF ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be disabled (OFF). It is again combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When it is day now ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or the schedule is active (set to be on = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to OFF &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outOFF'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: true,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR16 - Digital Inputs - External Switch ON/OFF  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to change of Digital Inputs (DI) state. Typical example of this solution is connection of external switch ON/OFF into Digital Input (IN) with consequence outputs action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External Switch OFF - All Outputs OFF ===&lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON  - All Outputs ON ===&lt;br /&gt;
Rule name: '''CR16_RULE'''  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON - All outputs ON with individual Power Up Sequence === &lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sequence&amp;quot;: {&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;actions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 1000&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 3000&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR17 - Digital Inputs - Connection of NETIO T1 Sensor  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 5.0.3+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to temperature metering connected into Digital Inputs (DI). Typical example of this solution is the temperature metering in server room. In case temperature hits specified temperature, the air-condition (AC) will turn ON. &lt;br /&gt;
&lt;br /&gt;
=== Temperature measurement - condition definition temperature range (15-45)℃ ===&lt;br /&gt;
NETIO T1 Sensor connected into INPUT n.2&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR17_TEMP''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;source&amp;quot;:&amp;quot;INPUTS/2/TEMP&amp;quot;,&lt;br /&gt;
 &amp;quot;type&amp;quot;:&amp;quot;RANGE&amp;quot;,&lt;br /&gt;
 &amp;quot;upperBound&amp;quot;:45,&lt;br /&gt;
 &amp;quot;lowerBound&amp;quot;:15,&lt;br /&gt;
 &amp;quot;timeHysteresis&amp;quot;:1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Temperature out of spec  - Output1 ON===&lt;br /&gt;
Rule name: '''CR17_RULE_1''' &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;:{&lt;br /&gt;
    &amp;quot;PAB/CR15_TEMP/IN&amp;quot;:false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;:{&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;:1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
===  Temperature in spec - Output1 OFF===&lt;br /&gt;
Rule name: '''CR17_RULE_2''' &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;:{&lt;br /&gt;
    &amp;quot;PAB/CR15_TEMP/IN&amp;quot;:true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;:{&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;:0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1050</id>
		<title>Rules Complete Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1050"/>
		<updated>2024-07-15T13:41:24Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* CR17 - Digital Inputs - Connection of NETIO T1 Sensor  FW 5.0.3+ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The concept of NETIO Conditions (PAB &amp;amp; WatchDog) &amp;amp; Rules is a set of prepared detections (Conditions) and Rules that act upon them. They are implemented directly in NETIO PDU devices. &lt;br /&gt;
&lt;br /&gt;
== CR01 - WatchDog (ping) to 1 IP address | default in FW 3.2.3 ==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
The ping in this example is sent every 60s and waits 5s for the device to respond. If the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and restarts (ACTION: 2 = SHORT OFF) device connected to first output. After restart, it waits 120 seconds and starts monitoring again. If the device does not respond, WatchDog remains in ERROR state until next successful ping.&lt;br /&gt;
&lt;br /&gt;
===WatchDog definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR01_WDT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.5&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR01_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;WDT/CR01_WDT/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR02 - Digital Inputs  (Push button to Toggle Outputs 1 and 2) | default in FW 3.2.3 ==&lt;br /&gt;
&lt;br /&gt;
Rule is used for managing outputs in response to change of Digital Inputs (DI) state. Rule monitors state of first DI. When DI switches from OFF (0) to ON (1), Rule switches (toggles) Outputs 1 &amp;amp; 2 to their opposite states (ACTION 4 = TOGGLE).&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR02_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR03 - Load Watchdog (Restart device if it's more than 2 minutes in IDLE mode) | default in FW 3.2.3 ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 2 minutes, it restarts (ACTION 2 = SHORT OFF) the output.&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR03_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 120&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR03_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR03_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR04 - Load Watchdog with alarm to Cloud ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 30 minutes, it restarts (ACTION 2 = SHORT OFF) the output. In addition, it triggers an alarm in NETIO Cloud, which sends a notification to specified email address.&lt;br /&gt;
This example needs a NETIO Cloud account with Premium version active for first output. There also has to be email notification enabled for the output.&lt;br /&gt;
&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart and sends alarm to Cloud.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR04_PAB'''&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR04_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR04_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR05 - Load Watchdog with zones (indicate OFF / IDLE / RUN mode by switched on output)==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. Measured load is then classified to several zones defined with thresholds (limit values). Depending on the zone in which the measured load is currently located, different actions can be triggered. Load value has to be between defined threshold for at least 10seconds in order to be placed to respective zone.&lt;br /&gt;
Example is composed of one PAB that classifies the zones and three Rules for 3 separate actions. Actions do the following:&lt;br /&gt;
* Output 1 load lower than 1W: Output 2 = ON&lt;br /&gt;
* Output 1 load between 1-20W: Output 3 = ON&lt;br /&gt;
* Output 1 load between 20-200W: Output 4 = ON&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR05_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    1,&lt;br /&gt;
    20,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules definitions===&lt;br /&gt;
&lt;br /&gt;
Rule 1 name: '''CR05_RULE_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/NR05_PAB/ZONE&amp;quot;: 0&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 2 name: '''CR05_RULE_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 3 name: '''CR05_RULE_3'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 2&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR06 - WatchDog for 2 IPs (Verify IP connectivity outage with 2 IPs)==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
In this example, we monitor two IPs and we want to restart device connected to Output 1 if none of the addresses reply.&lt;br /&gt;
The ping for both IPs is sent every 30s and waits 5s for device to respond. There are 5 consecutive timeouts tolerated before the ping is considered as failed. When the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and remains in ERROR state.&lt;br /&gt;
&lt;br /&gt;
In case both of the defined WatchDogs are in ERROR state, the Rule is triggered which then restarts Output 1.&lt;br /&gt;
&lt;br /&gt;
===WatchDogs definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.51&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.52&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR06_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_1/FAIL&amp;quot;: true,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_2/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR07 - Synchronized outputs states during working hours ==&lt;br /&gt;
Rule keeps track of first output state and when it changes, it switches output 2 to the same state. However, we want this synchronization only to work during working hours. We define the time with Schedule functionality and use it as a filter (mask) in Rules. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR07_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
[[File:NR07_Schedule.png|NR070 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR07_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR07_SCHEDULE/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR08 - Load Watchdog -&amp;gt; Turn output ON after period of time ==&lt;br /&gt;
&lt;br /&gt;
In this example we want to measure load on output 1 and indicate when the power is abnormally low for a period of time by switching device on Output 2 ON (could be control light, sound alarm etc.).&lt;br /&gt;
&lt;br /&gt;
In PAB we define indication for low power usage (1-20W) that is measured for period of 30 minutes (1800 seconds).&lt;br /&gt;
In Rule we define switching Output 2 = ON (ACTION 1 = TURN ON) based on fulfilled PAB condition. This set up counts with human interaction after the Rule action gets processed. (e.g. restarting/replacing device on Output 1 and turning Output 2 OFF).&lt;br /&gt;
It is possible to alter this behavior in such a way that the control light (Output 2) turns automatically OFF when load on Output 1 returns to standard values, i.e. higher than 20W (device gets repaired/replaced) or drops to 0W (device was removed or Output 1 turned OFF). This setup is defined in Rule '''NR08_ALT'''&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR08_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE_ALT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR09 - Digital Inputs with Schedule ==&lt;br /&gt;
&lt;br /&gt;
Examples shows usage when we want to detect switching of Digital Input to ON state (1) but to (not) react only during specified hours (e.g. outside of working hours).&lt;br /&gt;
Reaction hours are defined with Schedule functionality. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR09_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR09_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR09_SCHEDULE/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR10 - TURN OFF Output 1 before midnight ==&lt;br /&gt;
Rule in a combination with Schedule can be used to ensure a specified output will be turned off at the end of the day (or any other time).&lt;br /&gt;
Schedule in this application is '''NOT''' assigned to the output and acts only as a &amp;quot;trigger&amp;quot; for launching the Rule action.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''off_before_midnight'''&lt;br /&gt;
&lt;br /&gt;
Schedule configuration: Schedule is configured to have '''intervals every day from 23:59 to 24:00'''. In this configuration, the output turns of at 23:59.&lt;br /&gt;
&lt;br /&gt;
[[File:cr10_schedule.png|CR10 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR10_RULE'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/off_before_midnight/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR11 - Total load (8QS)==&lt;br /&gt;
CR11_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/TOTAL/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 3&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/total_outputs/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR12 - Negative load ==&lt;br /&gt;
CR12_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: -400,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 2&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/negative/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CR13 - Actions based on daylight &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Turns output ON/OFF based on sunrise/sunset times of set location.&lt;br /&gt;
In this example, output 1 gets turned on one hour before (-60 minutes) sunrise and turns off one hour (60 minutes) after sunset. Location is se for NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level.&lt;br /&gt;
&lt;br /&gt;
=== PAB definition ===&lt;br /&gt;
PAB name: '''CR13_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: -60,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: 60&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR13_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR14 - Actions based on Power-UP &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;== &lt;br /&gt;
&lt;br /&gt;
This example describes rule that evaluates after device start-up. Generally, there are 2 options for setting up conditions: &lt;br /&gt;
* SYSTEM/DEVICE_POWER_UP - device boot after power-cut&lt;br /&gt;
&lt;br /&gt;
Condition in rule description below reacts to device boot after power-cut. When device first starts after regaining power, it sends alarm to output 1 in NETIO Cloud service.&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR14_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR15 - Sunrise/sunset addaptive schedule with deep night off  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.1+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Control output ON/OFF based on sunrise/sunset times of set location and combine it with standard schedule using rules.&lt;br /&gt;
&lt;br /&gt;
In this example, output 1 gets turned on every day at 6:00 and switch off 30 minutes after sunrise and gets on again 30 minutes before sunset and turns off at midnight. This is an example of combination PAB output with standard schedule and mask the result of PAB with intervals defined in schedule.&lt;br /&gt;
&lt;br /&gt;
Following combination creates dynamic variable input with static scheduler overlay and the behaviour can be simply chosen by logical equations.&lt;br /&gt;
&lt;br /&gt;
=== 1. Configure schedule ===&lt;br /&gt;
Create a schedule with name &amp;quot;christmas_off&amp;quot; and create intervals 00:00 to 06:00 every day. No need to activate the scheduler for any output. Just define it.&lt;br /&gt;
&lt;br /&gt;
[[File:CR15 schedule christmas off.png]]&lt;br /&gt;
&lt;br /&gt;
=== 2. Create sunrise/sunset PAB ===&lt;br /&gt;
&lt;br /&gt;
Following PAB will have &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; result during the day between sunrise with 30 minutes delay and 30 minutes before sunset set for location of NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level. This result will be used in condition in rules to detect sunrise and sunset.&lt;br /&gt;
&lt;br /&gt;
PAB name: '''daylight'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -30&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create RULE for output ON ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be enabled (ON). It is combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When is night ( day is false = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: false,&amp;lt;/code&amp;gt;) and in paralel schedule is not active (set to be off = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to ON &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outON'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: false,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create RULE for output OFF ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be disabled (OFF). It is again combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When it is day now ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or the schedule is active (set to be on = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to OFF &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outOFF'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: true,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR16 - Digital Inputs - External Switch ON/OFF  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to change of Digital Inputs (DI) state. Typical example of this solution is connection of external switch ON/OFF into Digital Input (IN) with consequence outputs action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External Switch OFF - All Outputs OFF ===&lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON  - All Outputs ON ===&lt;br /&gt;
Rule name: '''CR16_RULE'''  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON - All outputs ON with individual Power Up Sequence === &lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sequence&amp;quot;: {&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;actions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 1000&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 3000&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR17 - Digital Inputs - Connection of NETIO T1 Sensor  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 5.0.3+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to temperature metering connected into Digital Inputs (DI). Typical example of this solution is the temperature metering in server room. In case temperature hits specified temperature, the air-condition (AC) will turn ON. &lt;br /&gt;
&lt;br /&gt;
=== Temperature measurement - condition definition temperature range (15-45)℃ ===&lt;br /&gt;
NETIO T1 Sensor connected into INPUT n.2&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR17_TEMP''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;source&amp;quot;:&amp;quot;INPUTS/2/TEMP&amp;quot;,&lt;br /&gt;
 &amp;quot;type&amp;quot;:&amp;quot;RANGE&amp;quot;,&lt;br /&gt;
 &amp;quot;upperBound&amp;quot;:45,&lt;br /&gt;
 &amp;quot;lowerBound&amp;quot;:15,&lt;br /&gt;
 &amp;quot;timeHysteresis&amp;quot;:1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Temperature out of limit  - Output1 ON ===&lt;br /&gt;
Rule name: '''CR17_RULE''' &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;:{&lt;br /&gt;
    &amp;quot;PAB/CR15_TEMP/IN&amp;quot;:false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;:{&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;:1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1049</id>
		<title>PAB</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1049"/>
		<updated>2024-07-15T13:38:24Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PAB (Power Analysis Block) is set of Condition &amp;amp; Rules (CR). It's set of most common functions available for NETIO devices. Based on each '''Condition''', subsequent [https://wiki.netio-products.com/index.php?title=Rules '''Rules'''] can be executed. &lt;br /&gt;
User friendly examples are prepared as [https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''Rules''' can be triggered based on a '''Condition''' - analysis of the state of one or more variables:&lt;br /&gt;
* Current [mA]&lt;br /&gt;
* Energy [Wh]&lt;br /&gt;
* Load [W]&lt;br /&gt;
* Power Factor&lt;br /&gt;
* S0 pulses&lt;br /&gt;
* TEMP [°C], [°F] - available from FW 5.0.3+&lt;br /&gt;
&lt;br /&gt;
Rules can then perform several actions described in section [https://wiki.netio-products.com/index.php?title=Rules '''Rules''']. &lt;br /&gt;
Every PAB is internally evaluated as having a discrete state which can be used as an input to a Rule mentioned above. State value is different for each type of PAB (described below). This state is also available in JSON protocol and therefore can be read externally.&lt;br /&gt;
&lt;br /&gt;
There are two types of PABs available: '''RANGE''' &amp;amp; '''ZONES'''. Each type has different states and configuration options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= RANGE =&lt;br /&gt;
True/False-based evaluation. Detects whether a monitored value lies in specified interval (range) for a period of time. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt;.&lt;br /&gt;
Interval is specified by lower &amp;lt;code&amp;gt;lowerBound&amp;lt;/code&amp;gt; and upper &amp;lt;code&amp;gt;upperBound&amp;lt;/code&amp;gt; boundaries. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; if a variable defined in &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; lies within for a period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Configuration Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| RANGE &lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| [s] Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| lowerBound &lt;br /&gt;
| int &lt;br /&gt;
| lower bound of the monitored value &lt;br /&gt;
|-&lt;br /&gt;
| upperBound &lt;br /&gt;
| int &lt;br /&gt;
| upper bound of the monitored value &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Immediate evaluation ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; immediately as Output 1 '''Current''' value appears '''between 100 and 200 mA'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 0&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Evaluation with delay ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; when Output 1 '''Load''' is '''between 200 and 300 Watts for 5s'''.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 300,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 5&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ZONES =&lt;br /&gt;
Opposed from a previous type, ZONE-type PAB detects, whether a monitored variable finds itself in a specified zone. State of PAB indicates what zone number (index) is the measured variable currently in. Zones are defined by their &amp;lt;code&amp;gt;thresholds&amp;lt;/code&amp;gt; (lower bounds) and there must be at least one threshold specified.&lt;br /&gt;
Monitored value must be present in a defined interval for period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| ZONES&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| '''[s]''' Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| thresholds&lt;br /&gt;
| list of integers &lt;br /&gt;
| lower-bounds of individual zones intervals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
PAB is evaluated according to the specified zones when the Output 2 '''Current''' value is in one of the zones for 10s.&lt;br /&gt;
Zone numbers are as following:&lt;br /&gt;
* '''0''': 0 - 49 mA&lt;br /&gt;
* '''1''': 50 - 99 mA&lt;br /&gt;
* '''2''': 100 - 149 mA&lt;br /&gt;
* '''3''': 150 - 199 mA&lt;br /&gt;
* '''4''': 200+ mA&lt;br /&gt;
&lt;br /&gt;
Eg: If the Current value is 130mA for at least 10s, PAB is evaluated as 2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    50,&lt;br /&gt;
    100,&lt;br /&gt;
    150,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DAYLIGHT (sunrise / sunset) &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Enables launching actions based on sunrise / sunset of current place.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| DAYLIGHT&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| longitude&lt;br /&gt;
| str &amp;quot;14.4129433E&amp;quot; OR int -73.8390597&lt;br /&gt;
| East/West coordinates&lt;br /&gt;
|-&lt;br /&gt;
| latitude&lt;br /&gt;
| str &amp;quot;50.0058144N&amp;quot; OR int -16.5237353&lt;br /&gt;
| North/South coordinates&lt;br /&gt;
|-&lt;br /&gt;
| altitude&lt;br /&gt;
| Number of meters above sea level&lt;br /&gt;
| 8848&lt;br /&gt;
|-&lt;br /&gt;
| sunriseDelay&lt;br /&gt;
| int [min]&lt;br /&gt;
| Delay of PAB activation/deactivation to sunrise&lt;br /&gt;
|-&lt;br /&gt;
| sunsetDelay&lt;br /&gt;
| int [min] &lt;br /&gt;
| Delay of PAB activation/deactivation to sunset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== PAB ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: -16.5237353,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: 28.4162475,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1048</id>
		<title>PAB</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=PAB&amp;diff=1048"/>
		<updated>2024-07-15T13:38:16Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PAB (Power Analysis Block) is set of Condition &amp;amp; Rules (CR). It's set of most common functions available for NETIO devices. Based on each '''Condition''', subsequent [https://wiki.netio-products.com/index.php?title=Rules '''Rules'''] can be executed. &lt;br /&gt;
User friendly examples are prepared as [https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples '''CRxx Conditions &amp;amp; Rules - examples''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The '''Rules''' can be triggered based on a '''Condition''' - analysis of the state of one or more variables:&lt;br /&gt;
* Current [mA]&lt;br /&gt;
* Energy [Wh]&lt;br /&gt;
* Load [W]&lt;br /&gt;
* Power Factor&lt;br /&gt;
* S0 pulses&lt;br /&gt;
* TEMP [°C],[°F] - available from FW 5.0.3+&lt;br /&gt;
&lt;br /&gt;
Rules can then perform several actions described in section [https://wiki.netio-products.com/index.php?title=Rules '''Rules''']. &lt;br /&gt;
Every PAB is internally evaluated as having a discrete state which can be used as an input to a Rule mentioned above. State value is different for each type of PAB (described below). This state is also available in JSON protocol and therefore can be read externally.&lt;br /&gt;
&lt;br /&gt;
There are two types of PABs available: '''RANGE''' &amp;amp; '''ZONES'''. Each type has different states and configuration options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= RANGE =&lt;br /&gt;
True/False-based evaluation. Detects whether a monitored value lies in specified interval (range) for a period of time. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;FALSE&amp;lt;/code&amp;gt;.&lt;br /&gt;
Interval is specified by lower &amp;lt;code&amp;gt;lowerBound&amp;lt;/code&amp;gt; and upper &amp;lt;code&amp;gt;upperBound&amp;lt;/code&amp;gt; boundaries. PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; if a variable defined in &amp;lt;code&amp;gt;source&amp;lt;/code&amp;gt; lies within for a period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Configuration Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| RANGE &lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| [s] Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| lowerBound &lt;br /&gt;
| int &lt;br /&gt;
| lower bound of the monitored value &lt;br /&gt;
|-&lt;br /&gt;
| upperBound &lt;br /&gt;
| int &lt;br /&gt;
| upper bound of the monitored value &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Immediate evaluation ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; immediately as Output 1 '''Current''' value appears '''between 100 and 200 mA'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 0&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Evaluation with delay ===&lt;br /&gt;
PAB evaluates to &amp;lt;code&amp;gt;TRUE&amp;lt;/code&amp;gt; when Output 1 '''Load''' is '''between 200 and 300 Watts for 5s'''.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 200,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 300,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 5&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= ZONES =&lt;br /&gt;
Opposed from a previous type, ZONE-type PAB detects, whether a monitored variable finds itself in a specified zone. State of PAB indicates what zone number (index) is the measured variable currently in. Zones are defined by their &amp;lt;code&amp;gt;thresholds&amp;lt;/code&amp;gt; (lower bounds) and there must be at least one threshold specified.&lt;br /&gt;
Monitored value must be present in a defined interval for period of time defined in &amp;lt;code&amp;gt;timeHysteresis&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type &lt;br /&gt;
| ZONES&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| source &lt;br /&gt;
| OUTPUTS/'''x'''/(LOAD/CURRENT/POWER)&lt;br /&gt;
| The monitored variable. '''x''' indicates input / output number.&lt;br /&gt;
|-&lt;br /&gt;
| timeHysteresis &lt;br /&gt;
| int &lt;br /&gt;
| '''[s]''' Monitored value must be present in defined interval for amount of time defined here.&lt;br /&gt;
&lt;br /&gt;
Eg: If the time hysteresis is equal to 5, monitored value must be within a defined interval for at least 5s. Only then it will be evaluated.&lt;br /&gt;
|-&lt;br /&gt;
| thresholds&lt;br /&gt;
| list of integers &lt;br /&gt;
| lower-bounds of individual zones intervals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
PAB is evaluated according to the specified zones when the Output 2 '''Current''' value is in one of the zones for 10s.&lt;br /&gt;
Zone numbers are as following:&lt;br /&gt;
* '''0''': 0 - 49 mA&lt;br /&gt;
* '''1''': 50 - 99 mA&lt;br /&gt;
* '''2''': 100 - 149 mA&lt;br /&gt;
* '''3''': 150 - 199 mA&lt;br /&gt;
* '''4''': 200+ mA&lt;br /&gt;
&lt;br /&gt;
Eg: If the Current value is 130mA for at least 10s, PAB is evaluated as 2.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    50,&lt;br /&gt;
    100,&lt;br /&gt;
    150,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DAYLIGHT (sunrise / sunset) &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; =&lt;br /&gt;
Enables launching actions based on sunrise / sunset of current place.&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Variable&lt;br /&gt;
! Value&lt;br /&gt;
! Description &lt;br /&gt;
|-&lt;br /&gt;
| type&lt;br /&gt;
| DAYLIGHT&lt;br /&gt;
| PAB type&lt;br /&gt;
|-&lt;br /&gt;
| longitude&lt;br /&gt;
| str &amp;quot;14.4129433E&amp;quot; OR int -73.8390597&lt;br /&gt;
| East/West coordinates&lt;br /&gt;
|-&lt;br /&gt;
| latitude&lt;br /&gt;
| str &amp;quot;50.0058144N&amp;quot; OR int -16.5237353&lt;br /&gt;
| North/South coordinates&lt;br /&gt;
|-&lt;br /&gt;
| altitude&lt;br /&gt;
| Number of meters above sea level&lt;br /&gt;
| 8848&lt;br /&gt;
|-&lt;br /&gt;
| sunriseDelay&lt;br /&gt;
| int [min]&lt;br /&gt;
| Delay of PAB activation/deactivation to sunrise&lt;br /&gt;
|-&lt;br /&gt;
| sunsetDelay&lt;br /&gt;
| int [min] &lt;br /&gt;
| Delay of PAB activation/deactivation to sunset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== PAB ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: -16.5237353,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: 28.4162475,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 240,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -180&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1047</id>
		<title>Rules Complete Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1047"/>
		<updated>2024-07-15T13:34:18Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The concept of NETIO Conditions (PAB &amp;amp; WatchDog) &amp;amp; Rules is a set of prepared detections (Conditions) and Rules that act upon them. They are implemented directly in NETIO PDU devices. &lt;br /&gt;
&lt;br /&gt;
== CR01 - WatchDog (ping) to 1 IP address | default in FW 3.2.3 ==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
The ping in this example is sent every 60s and waits 5s for the device to respond. If the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and restarts (ACTION: 2 = SHORT OFF) device connected to first output. After restart, it waits 120 seconds and starts monitoring again. If the device does not respond, WatchDog remains in ERROR state until next successful ping.&lt;br /&gt;
&lt;br /&gt;
===WatchDog definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR01_WDT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.5&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR01_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;WDT/CR01_WDT/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR02 - Digital Inputs  (Push button to Toggle Outputs 1 and 2) | default in FW 3.2.3 ==&lt;br /&gt;
&lt;br /&gt;
Rule is used for managing outputs in response to change of Digital Inputs (DI) state. Rule monitors state of first DI. When DI switches from OFF (0) to ON (1), Rule switches (toggles) Outputs 1 &amp;amp; 2 to their opposite states (ACTION 4 = TOGGLE).&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR02_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR03 - Load Watchdog (Restart device if it's more than 2 minutes in IDLE mode) | default in FW 3.2.3 ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 2 minutes, it restarts (ACTION 2 = SHORT OFF) the output.&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR03_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 120&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR03_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR03_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR04 - Load Watchdog with alarm to Cloud ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 30 minutes, it restarts (ACTION 2 = SHORT OFF) the output. In addition, it triggers an alarm in NETIO Cloud, which sends a notification to specified email address.&lt;br /&gt;
This example needs a NETIO Cloud account with Premium version active for first output. There also has to be email notification enabled for the output.&lt;br /&gt;
&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart and sends alarm to Cloud.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR04_PAB'''&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR04_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR04_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR05 - Load Watchdog with zones (indicate OFF / IDLE / RUN mode by switched on output)==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. Measured load is then classified to several zones defined with thresholds (limit values). Depending on the zone in which the measured load is currently located, different actions can be triggered. Load value has to be between defined threshold for at least 10seconds in order to be placed to respective zone.&lt;br /&gt;
Example is composed of one PAB that classifies the zones and three Rules for 3 separate actions. Actions do the following:&lt;br /&gt;
* Output 1 load lower than 1W: Output 2 = ON&lt;br /&gt;
* Output 1 load between 1-20W: Output 3 = ON&lt;br /&gt;
* Output 1 load between 20-200W: Output 4 = ON&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR05_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    1,&lt;br /&gt;
    20,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules definitions===&lt;br /&gt;
&lt;br /&gt;
Rule 1 name: '''CR05_RULE_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/NR05_PAB/ZONE&amp;quot;: 0&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 2 name: '''CR05_RULE_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 3 name: '''CR05_RULE_3'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 2&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR06 - WatchDog for 2 IPs (Verify IP connectivity outage with 2 IPs)==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
In this example, we monitor two IPs and we want to restart device connected to Output 1 if none of the addresses reply.&lt;br /&gt;
The ping for both IPs is sent every 30s and waits 5s for device to respond. There are 5 consecutive timeouts tolerated before the ping is considered as failed. When the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and remains in ERROR state.&lt;br /&gt;
&lt;br /&gt;
In case both of the defined WatchDogs are in ERROR state, the Rule is triggered which then restarts Output 1.&lt;br /&gt;
&lt;br /&gt;
===WatchDogs definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.51&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.52&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR06_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_1/FAIL&amp;quot;: true,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_2/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR07 - Synchronized outputs states during working hours ==&lt;br /&gt;
Rule keeps track of first output state and when it changes, it switches output 2 to the same state. However, we want this synchronization only to work during working hours. We define the time with Schedule functionality and use it as a filter (mask) in Rules. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR07_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
[[File:NR07_Schedule.png|NR070 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR07_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR07_SCHEDULE/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR08 - Load Watchdog -&amp;gt; Turn output ON after period of time ==&lt;br /&gt;
&lt;br /&gt;
In this example we want to measure load on output 1 and indicate when the power is abnormally low for a period of time by switching device on Output 2 ON (could be control light, sound alarm etc.).&lt;br /&gt;
&lt;br /&gt;
In PAB we define indication for low power usage (1-20W) that is measured for period of 30 minutes (1800 seconds).&lt;br /&gt;
In Rule we define switching Output 2 = ON (ACTION 1 = TURN ON) based on fulfilled PAB condition. This set up counts with human interaction after the Rule action gets processed. (e.g. restarting/replacing device on Output 1 and turning Output 2 OFF).&lt;br /&gt;
It is possible to alter this behavior in such a way that the control light (Output 2) turns automatically OFF when load on Output 1 returns to standard values, i.e. higher than 20W (device gets repaired/replaced) or drops to 0W (device was removed or Output 1 turned OFF). This setup is defined in Rule '''NR08_ALT'''&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR08_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE_ALT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR09 - Digital Inputs with Schedule ==&lt;br /&gt;
&lt;br /&gt;
Examples shows usage when we want to detect switching of Digital Input to ON state (1) but to (not) react only during specified hours (e.g. outside of working hours).&lt;br /&gt;
Reaction hours are defined with Schedule functionality. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR09_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR09_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR09_SCHEDULE/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR10 - TURN OFF Output 1 before midnight ==&lt;br /&gt;
Rule in a combination with Schedule can be used to ensure a specified output will be turned off at the end of the day (or any other time).&lt;br /&gt;
Schedule in this application is '''NOT''' assigned to the output and acts only as a &amp;quot;trigger&amp;quot; for launching the Rule action.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''off_before_midnight'''&lt;br /&gt;
&lt;br /&gt;
Schedule configuration: Schedule is configured to have '''intervals every day from 23:59 to 24:00'''. In this configuration, the output turns of at 23:59.&lt;br /&gt;
&lt;br /&gt;
[[File:cr10_schedule.png|CR10 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR10_RULE'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/off_before_midnight/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR11 - Total load (8QS)==&lt;br /&gt;
CR11_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/TOTAL/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 3&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/total_outputs/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR12 - Negative load ==&lt;br /&gt;
CR12_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: -400,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 2&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/negative/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CR13 - Actions based on daylight &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Turns output ON/OFF based on sunrise/sunset times of set location.&lt;br /&gt;
In this example, output 1 gets turned on one hour before (-60 minutes) sunrise and turns off one hour (60 minutes) after sunset. Location is se for NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level.&lt;br /&gt;
&lt;br /&gt;
=== PAB definition ===&lt;br /&gt;
PAB name: '''CR13_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: -60,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: 60&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR13_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR14 - Actions based on Power-UP &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;== &lt;br /&gt;
&lt;br /&gt;
This example describes rule that evaluates after device start-up. Generally, there are 2 options for setting up conditions: &lt;br /&gt;
* SYSTEM/DEVICE_POWER_UP - device boot after power-cut&lt;br /&gt;
&lt;br /&gt;
Condition in rule description below reacts to device boot after power-cut. When device first starts after regaining power, it sends alarm to output 1 in NETIO Cloud service.&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR14_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR15 - Sunrise/sunset addaptive schedule with deep night off  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.1+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Control output ON/OFF based on sunrise/sunset times of set location and combine it with standard schedule using rules.&lt;br /&gt;
&lt;br /&gt;
In this example, output 1 gets turned on every day at 6:00 and switch off 30 minutes after sunrise and gets on again 30 minutes before sunset and turns off at midnight. This is an example of combination PAB output with standard schedule and mask the result of PAB with intervals defined in schedule.&lt;br /&gt;
&lt;br /&gt;
Following combination creates dynamic variable input with static scheduler overlay and the behaviour can be simply chosen by logical equations.&lt;br /&gt;
&lt;br /&gt;
=== 1. Configure schedule ===&lt;br /&gt;
Create a schedule with name &amp;quot;christmas_off&amp;quot; and create intervals 00:00 to 06:00 every day. No need to activate the scheduler for any output. Just define it.&lt;br /&gt;
&lt;br /&gt;
[[File:CR15 schedule christmas off.png]]&lt;br /&gt;
&lt;br /&gt;
=== 2. Create sunrise/sunset PAB ===&lt;br /&gt;
&lt;br /&gt;
Following PAB will have &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; result during the day between sunrise with 30 minutes delay and 30 minutes before sunset set for location of NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level. This result will be used in condition in rules to detect sunrise and sunset.&lt;br /&gt;
&lt;br /&gt;
PAB name: '''daylight'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -30&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create RULE for output ON ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be enabled (ON). It is combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When is night ( day is false = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: false,&amp;lt;/code&amp;gt;) and in paralel schedule is not active (set to be off = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to ON &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outON'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: false,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create RULE for output OFF ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be disabled (OFF). It is again combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When it is day now ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or the schedule is active (set to be on = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to OFF &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outOFF'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: true,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR16 - Digital Inputs - External Switch ON/OFF  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to change of Digital Inputs (DI) state. Typical example of this solution is connection of external switch ON/OFF into Digital Input (IN) with consequence outputs action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External Switch OFF - All Outputs OFF ===&lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON  - All Outputs ON ===&lt;br /&gt;
Rule name: '''CR16_RULE'''  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON - All outputs ON with individual Power Up Sequence === &lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sequence&amp;quot;: {&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;actions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 1000&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 3000&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR17 - Digital Inputs - Connection of NETIO T1 Sensor  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 5.0.3+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to temperature metering connected into Digital Inputs (DI). Typical example of this solution is the temperature metering of server room. In case temperature hit specify temperature, the air-condition (AC) will turn on. As temperature come back to define temperature range, the air-condition (AC) turn off.&lt;br /&gt;
&lt;br /&gt;
=== Temperature measurement - condition definition temperature range (15-45)℃ ===&lt;br /&gt;
NETIO T1 Sensor connected into INPUT n.2&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR17_TEMP''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;source&amp;quot;:&amp;quot;INPUTS/2/TEMP&amp;quot;,&lt;br /&gt;
 &amp;quot;type&amp;quot;:&amp;quot;RANGE&amp;quot;,&lt;br /&gt;
 &amp;quot;upperBound&amp;quot;:45,&lt;br /&gt;
 &amp;quot;lowerBound&amp;quot;:15,&lt;br /&gt;
 &amp;quot;timeHysteresis&amp;quot;:1&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  Temperature out of limit  - Output1 ON ===&lt;br /&gt;
Rule name: '''CR17_RULE''' &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;:{&lt;br /&gt;
    &amp;quot;PAB/CR15_TEMP/IN&amp;quot;:false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;:{&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;:1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1046</id>
		<title>Rules Complete Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1046"/>
		<updated>2024-07-08T07:52:27Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: /* External Switch ON  - All outputs ON with individual Power Up Sequence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The concept of NETIO Conditions (PAB &amp;amp; WatchDog) &amp;amp; Rules is a set of prepared detections (Conditions) and Rules that act upon them. They are implemented directly in NETIO PDU devices. &lt;br /&gt;
&lt;br /&gt;
== CR01 - WatchDog (ping) to 1 IP address | default in FW 3.2.3 ==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
The ping in this example is sent every 60s and waits 5s for the device to respond. If the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and restarts (ACTION: 2 = SHORT OFF) device connected to first output. After restart, it waits 120 seconds and starts monitoring again. If the device does not respond, WatchDog remains in ERROR state until next successful ping.&lt;br /&gt;
&lt;br /&gt;
===WatchDog definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR01_WDT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.5&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR01_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;WDT/CR01_WDT/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR02 - Digital Inputs  (Push button to Toggle Outputs 1 and 2) | default in FW 3.2.3 ==&lt;br /&gt;
&lt;br /&gt;
Rule is used for managing outputs in response to change of Digital Inputs (DI) state. Rule monitors state of first DI. When DI switches from OFF (0) to ON (1), Rule switches (toggles) Outputs 1 &amp;amp; 2 to their opposite states (ACTION 4 = TOGGLE).&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR02_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR03 - Load Watchdog (Restart device if it's more than 2 minutes in IDLE mode) | default in FW 3.2.3 ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 2 minutes, it restarts (ACTION 2 = SHORT OFF) the output.&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR03_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 120&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR03_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR03_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR04 - Load Watchdog with alarm to Cloud ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 30 minutes, it restarts (ACTION 2 = SHORT OFF) the output. In addition, it triggers an alarm in NETIO Cloud, which sends a notification to specified email address.&lt;br /&gt;
This example needs a NETIO Cloud account with Premium version active for first output. There also has to be email notification enabled for the output.&lt;br /&gt;
&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart and sends alarm to Cloud.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR04_PAB'''&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR04_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR04_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR05 - Load Watchdog with zones (indicate OFF / IDLE / RUN mode by switched on output)==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. Measured load is then classified to several zones defined with thresholds (limit values). Depending on the zone in which the measured load is currently located, different actions can be triggered. Load value has to be between defined threshold for at least 10seconds in order to be placed to respective zone.&lt;br /&gt;
Example is composed of one PAB that classifies the zones and three Rules for 3 separate actions. Actions do the following:&lt;br /&gt;
* Output 1 load lower than 1W: Output 2 = ON&lt;br /&gt;
* Output 1 load between 1-20W: Output 3 = ON&lt;br /&gt;
* Output 1 load between 20-200W: Output 4 = ON&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR05_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    1,&lt;br /&gt;
    20,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules definitions===&lt;br /&gt;
&lt;br /&gt;
Rule 1 name: '''CR05_RULE_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/NR05_PAB/ZONE&amp;quot;: 0&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 2 name: '''CR05_RULE_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 3 name: '''CR05_RULE_3'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 2&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR06 - WatchDog for 2 IPs (Verify IP connectivity outage with 2 IPs)==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
In this example, we monitor two IPs and we want to restart device connected to Output 1 if none of the addresses reply.&lt;br /&gt;
The ping for both IPs is sent every 30s and waits 5s for device to respond. There are 5 consecutive timeouts tolerated before the ping is considered as failed. When the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and remains in ERROR state.&lt;br /&gt;
&lt;br /&gt;
In case both of the defined WatchDogs are in ERROR state, the Rule is triggered which then restarts Output 1.&lt;br /&gt;
&lt;br /&gt;
===WatchDogs definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.51&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.52&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR06_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_1/FAIL&amp;quot;: true,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_2/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR07 - Synchronized outputs states during working hours ==&lt;br /&gt;
Rule keeps track of first output state and when it changes, it switches output 2 to the same state. However, we want this synchronization only to work during working hours. We define the time with Schedule functionality and use it as a filter (mask) in Rules. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR07_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
[[File:NR07_Schedule.png|NR070 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR07_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR07_SCHEDULE/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR08 - Load Watchdog -&amp;gt; Turn output ON after period of time ==&lt;br /&gt;
&lt;br /&gt;
In this example we want to measure load on output 1 and indicate when the power is abnormally low for a period of time by switching device on Output 2 ON (could be control light, sound alarm etc.).&lt;br /&gt;
&lt;br /&gt;
In PAB we define indication for low power usage (1-20W) that is measured for period of 30 minutes (1800 seconds).&lt;br /&gt;
In Rule we define switching Output 2 = ON (ACTION 1 = TURN ON) based on fulfilled PAB condition. This set up counts with human interaction after the Rule action gets processed. (e.g. restarting/replacing device on Output 1 and turning Output 2 OFF).&lt;br /&gt;
It is possible to alter this behavior in such a way that the control light (Output 2) turns automatically OFF when load on Output 1 returns to standard values, i.e. higher than 20W (device gets repaired/replaced) or drops to 0W (device was removed or Output 1 turned OFF). This setup is defined in Rule '''NR08_ALT'''&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR08_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE_ALT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR09 - Digital Inputs with Schedule ==&lt;br /&gt;
&lt;br /&gt;
Examples shows usage when we want to detect switching of Digital Input to ON state (1) but to (not) react only during specified hours (e.g. outside of working hours).&lt;br /&gt;
Reaction hours are defined with Schedule functionality. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR09_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR09_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR09_SCHEDULE/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR10 - TURN OFF Output 1 before midnight ==&lt;br /&gt;
Rule in a combination with Schedule can be used to ensure a specified output will be turned off at the end of the day (or any other time).&lt;br /&gt;
Schedule in this application is '''NOT''' assigned to the output and acts only as a &amp;quot;trigger&amp;quot; for launching the Rule action.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''off_before_midnight'''&lt;br /&gt;
&lt;br /&gt;
Schedule configuration: Schedule is configured to have '''intervals every day from 23:59 to 24:00'''. In this configuration, the output turns of at 23:59.&lt;br /&gt;
&lt;br /&gt;
[[File:cr10_schedule.png|CR10 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR10_RULE'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/off_before_midnight/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR11 - Total load (8QS)==&lt;br /&gt;
CR11_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/TOTAL/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 3&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/total_outputs/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR12 - Negative load ==&lt;br /&gt;
CR12_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: -400,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 2&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/negative/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CR13 - Actions based on daylight &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Turns output ON/OFF based on sunrise/sunset times of set location.&lt;br /&gt;
In this example, output 1 gets turned on one hour before (-60 minutes) sunrise and turns off one hour (60 minutes) after sunset. Location is se for NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level.&lt;br /&gt;
&lt;br /&gt;
=== PAB definition ===&lt;br /&gt;
PAB name: '''CR13_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: -60,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: 60&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR13_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR14 - Actions based on Power-UP &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;== &lt;br /&gt;
&lt;br /&gt;
This example describes rule that evaluates after device start-up. Generally, there are 2 options for setting up conditions: &lt;br /&gt;
* SYSTEM/DEVICE_POWER_UP - device boot after power-cut&lt;br /&gt;
&lt;br /&gt;
Condition in rule description below reacts to device boot after power-cut. When device first starts after regaining power, it sends alarm to output 1 in NETIO Cloud service.&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR14_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR15 - Sunrise/sunset addaptive schedule with deep night off  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.1+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Control output ON/OFF based on sunrise/sunset times of set location and combine it with standard schedule using rules.&lt;br /&gt;
&lt;br /&gt;
In this example, output 1 gets turned on every day at 6:00 and switch off 30 minutes after sunrise and gets on again 30 minutes before sunset and turns off at midnight. This is an example of combination PAB output with standard schedule and mask the result of PAB with intervals defined in schedule.&lt;br /&gt;
&lt;br /&gt;
Following combination creates dynamic variable input with static scheduler overlay and the behaviour can be simply chosen by logical equations.&lt;br /&gt;
&lt;br /&gt;
=== 1. Configure schedule ===&lt;br /&gt;
Create a schedule with name &amp;quot;christmas_off&amp;quot; and create intervals 00:00 to 06:00 every day. No need to activate the scheduler for any output. Just define it.&lt;br /&gt;
&lt;br /&gt;
[[File:CR15 schedule christmas off.png]]&lt;br /&gt;
&lt;br /&gt;
=== 2. Create sunrise/sunset PAB ===&lt;br /&gt;
&lt;br /&gt;
Following PAB will have &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; result during the day between sunrise with 30 minutes delay and 30 minutes before sunset set for location of NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level. This result will be used in condition in rules to detect sunrise and sunset.&lt;br /&gt;
&lt;br /&gt;
PAB name: '''daylight'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -30&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create RULE for output ON ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be enabled (ON). It is combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When is night ( day is false = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: false,&amp;lt;/code&amp;gt;) and in paralel schedule is not active (set to be off = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to ON &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outON'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: false,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create RULE for output OFF ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be disabled (OFF). It is again combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When it is day now ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or the schedule is active (set to be on = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to OFF &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outOFF'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: true,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR16 - Digital Inputs - External Switch ON/OFF  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to change of Digital Inputs (DI) state. Typical example of this solution is connection of external switch ON/OFF into Digital Input (IN) with consequence outputs action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External Switch OFF - All Outputs OFF ===&lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON  - All Outputs ON ===&lt;br /&gt;
Rule name: '''CR16_RULE'''  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON - All outputs ON with individual Power Up Sequence === &lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sequence&amp;quot;: {&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;actions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 1000&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 3000&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1045</id>
		<title>Rules Complete Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1045"/>
		<updated>2024-07-08T07:45:12Z</updated>

		<summary type="html">&lt;p&gt;Tbezstarosta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The concept of NETIO Conditions (PAB &amp;amp; WatchDog) &amp;amp; Rules is a set of prepared detections (Conditions) and Rules that act upon them. They are implemented directly in NETIO PDU devices. &lt;br /&gt;
&lt;br /&gt;
== CR01 - WatchDog (ping) to 1 IP address | default in FW 3.2.3 ==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
The ping in this example is sent every 60s and waits 5s for the device to respond. If the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and restarts (ACTION: 2 = SHORT OFF) device connected to first output. After restart, it waits 120 seconds and starts monitoring again. If the device does not respond, WatchDog remains in ERROR state until next successful ping.&lt;br /&gt;
&lt;br /&gt;
===WatchDog definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR01_WDT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.5&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR01_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;WDT/CR01_WDT/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR02 - Digital Inputs  (Push button to Toggle Outputs 1 and 2) | default in FW 3.2.3 ==&lt;br /&gt;
&lt;br /&gt;
Rule is used for managing outputs in response to change of Digital Inputs (DI) state. Rule monitors state of first DI. When DI switches from OFF (0) to ON (1), Rule switches (toggles) Outputs 1 &amp;amp; 2 to their opposite states (ACTION 4 = TOGGLE).&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR02_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR03 - Load Watchdog (Restart device if it's more than 2 minutes in IDLE mode) | default in FW 3.2.3 ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 2 minutes, it restarts (ACTION 2 = SHORT OFF) the output.&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR03_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 120&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR03_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR03_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR04 - Load Watchdog with alarm to Cloud ==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. If the load is between 1-20W for at least 30 minutes, it restarts (ACTION 2 = SHORT OFF) the output. In addition, it triggers an alarm in NETIO Cloud, which sends a notification to specified email address.&lt;br /&gt;
This example needs a NETIO Cloud account with Premium version active for first output. There also has to be email notification enabled for the output.&lt;br /&gt;
&lt;br /&gt;
Example uses PAB (Power Analysis Block) functionality to determine if measured value (load in our case) lies in given range for a period of time. When it does, defined Rule triggers device restart and sends alarm to Cloud.&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR04_PAB'''&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR04_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR04_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR05 - Load Watchdog with zones (indicate OFF / IDLE / RUN mode by switched on output)==&lt;br /&gt;
Rule monitors load (Watts) on Output 1. Measured load is then classified to several zones defined with thresholds (limit values). Depending on the zone in which the measured load is currently located, different actions can be triggered. Load value has to be between defined threshold for at least 10seconds in order to be placed to respective zone.&lt;br /&gt;
Example is composed of one PAB that classifies the zones and three Rules for 3 separate actions. Actions do the following:&lt;br /&gt;
* Output 1 load lower than 1W: Output 2 = ON&lt;br /&gt;
* Output 1 load between 1-20W: Output 3 = ON&lt;br /&gt;
* Output 1 load between 20-200W: Output 4 = ON&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR05_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;ZONES&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/2/CURRENT&amp;quot;,&lt;br /&gt;
  &amp;quot;thresholds&amp;quot;: [&lt;br /&gt;
    1,&lt;br /&gt;
    20,&lt;br /&gt;
    200&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 10&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rules definitions===&lt;br /&gt;
&lt;br /&gt;
Rule 1 name: '''CR05_RULE_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/NR05_PAB/ZONE&amp;quot;: 0&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 2 name: '''CR05_RULE_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule 3 name: '''CR05_RULE_3'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR05_PAB/ZONE&amp;quot;: 2&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR06 - WatchDog for 2 IPs (Verify IP connectivity outage with 2 IPs)==&lt;br /&gt;
The WatchDog functionality is used to monitor connectivity to specified IP address (or URL) by sending PING request to it.&lt;br /&gt;
&lt;br /&gt;
In this example, we monitor two IPs and we want to restart device connected to Output 1 if none of the addresses reply.&lt;br /&gt;
The ping for both IPs is sent every 30s and waits 5s for device to respond. There are 5 consecutive timeouts tolerated before the ping is considered as failed. When the ping fails, Watchdog returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and remains in ERROR state.&lt;br /&gt;
&lt;br /&gt;
In case both of the defined WatchDogs are in ERROR state, the Rule is triggered which then restarts Output 1.&lt;br /&gt;
&lt;br /&gt;
===WatchDogs definition===&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_1'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.51&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WatchDog name: '''CR06_WDT_2'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.1.52&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 60,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 120,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
 &lt;br /&gt;
Rule name: '''CR06_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_1/FAIL&amp;quot;: true,&lt;br /&gt;
    &amp;quot;WDT/CR06_WDT_2/FAIL&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR07 - Synchronized outputs states during working hours ==&lt;br /&gt;
Rule keeps track of first output state and when it changes, it switches output 2 to the same state. However, we want this synchronization only to work during working hours. We define the time with Schedule functionality and use it as a filter (mask) in Rules. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR07_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
[[File:NR07_Schedule.png|NR070 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR07_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR07_SCHEDULE/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR08 - Load Watchdog -&amp;gt; Turn output ON after period of time ==&lt;br /&gt;
&lt;br /&gt;
In this example we want to measure load on output 1 and indicate when the power is abnormally low for a period of time by switching device on Output 2 ON (could be control light, sound alarm etc.).&lt;br /&gt;
&lt;br /&gt;
In PAB we define indication for low power usage (1-20W) that is measured for period of 30 minutes (1800 seconds).&lt;br /&gt;
In Rule we define switching Output 2 = ON (ACTION 1 = TURN ON) based on fulfilled PAB condition. This set up counts with human interaction after the Rule action gets processed. (e.g. restarting/replacing device on Output 1 and turning Output 2 OFF).&lt;br /&gt;
It is possible to alter this behavior in such a way that the control light (Output 2) turns automatically OFF when load on Output 1 returns to standard values, i.e. higher than 20W (device gets repaired/replaced) or drops to 0W (device was removed or Output 1 turned OFF). This setup is defined in Rule '''NR08_ALT'''&lt;br /&gt;
&lt;br /&gt;
===PAB definition===&lt;br /&gt;
&lt;br /&gt;
PAB name: '''CR08_PAB'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 20,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 1800&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR08_RULE_ALT'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR08_PAB/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR09 - Digital Inputs with Schedule ==&lt;br /&gt;
&lt;br /&gt;
Examples shows usage when we want to detect switching of Digital Input to ON state (1) but to (not) react only during specified hours (e.g. outside of working hours).&lt;br /&gt;
Reaction hours are defined with Schedule functionality. Schedule can be defined manually or imported as a configuration file.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''CR09_SCHEDULE'''&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR09_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/CR09_SCHEDULE/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 2&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR10 - TURN OFF Output 1 before midnight ==&lt;br /&gt;
Rule in a combination with Schedule can be used to ensure a specified output will be turned off at the end of the day (or any other time).&lt;br /&gt;
Schedule in this application is '''NOT''' assigned to the output and acts only as a &amp;quot;trigger&amp;quot; for launching the Rule action.&lt;br /&gt;
&lt;br /&gt;
===Schedule definition===&lt;br /&gt;
&lt;br /&gt;
Schedule name: '''off_before_midnight'''&lt;br /&gt;
&lt;br /&gt;
Schedule configuration: Schedule is configured to have '''intervals every day from 23:59 to 24:00'''. In this configuration, the output turns of at 23:59.&lt;br /&gt;
&lt;br /&gt;
[[File:cr10_schedule.png|CR10 Schedule]]&lt;br /&gt;
&lt;br /&gt;
===Rule definition===&lt;br /&gt;
&lt;br /&gt;
Rule name: '''CR10_RULE'''&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SCHEDULE/off_before_midnight/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;filters&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR11 - Total load (8QS)==&lt;br /&gt;
CR11_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/TOTAL/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 100,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 3&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/total_outputs/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR12 - Negative load ==&lt;br /&gt;
CR12_PAB&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;RANGE&amp;quot;,&lt;br /&gt;
  &amp;quot;source&amp;quot;: &amp;quot;OUTPUTS/1/LOAD&amp;quot;,&lt;br /&gt;
  &amp;quot;lowerBound&amp;quot;: -400,&lt;br /&gt;
  &amp;quot;upperBound&amp;quot;: 0,&lt;br /&gt;
  &amp;quot;timeHysteresis&amp;quot;: 2&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/negative/IN&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/3/ACTION&amp;quot;: 4,&lt;br /&gt;
    &amp;quot;OUTPUTS/4/ACTION&amp;quot;: 4&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CR13 - Actions based on daylight &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Turns output ON/OFF based on sunrise/sunset times of set location.&lt;br /&gt;
In this example, output 1 gets turned on one hour before (-60 minutes) sunrise and turns off one hour (60 minutes) after sunset. Location is se for NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level.&lt;br /&gt;
&lt;br /&gt;
=== PAB definition ===&lt;br /&gt;
PAB name: '''CR13_PAB'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: -60,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: 60&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR13_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR14 - Actions based on Power-UP &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;== &lt;br /&gt;
&lt;br /&gt;
This example describes rule that evaluates after device start-up. Generally, there are 2 options for setting up conditions: &lt;br /&gt;
* SYSTEM/DEVICE_POWER_UP - device boot after power-cut&lt;br /&gt;
&lt;br /&gt;
Condition in rule description below reacts to device boot after power-cut. When device first starts after regaining power, it sends alarm to output 1 in NETIO Cloud service.&lt;br /&gt;
&lt;br /&gt;
=== Rule definition ===&lt;br /&gt;
Rule name: '''CR14_RULE'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR15 - Sunrise/sunset addaptive schedule with deep night off  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.1+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Control output ON/OFF based on sunrise/sunset times of set location and combine it with standard schedule using rules.&lt;br /&gt;
&lt;br /&gt;
In this example, output 1 gets turned on every day at 6:00 and switch off 30 minutes after sunrise and gets on again 30 minutes before sunset and turns off at midnight. This is an example of combination PAB output with standard schedule and mask the result of PAB with intervals defined in schedule.&lt;br /&gt;
&lt;br /&gt;
Following combination creates dynamic variable input with static scheduler overlay and the behaviour can be simply chosen by logical equations.&lt;br /&gt;
&lt;br /&gt;
=== 1. Configure schedule ===&lt;br /&gt;
Create a schedule with name &amp;quot;christmas_off&amp;quot; and create intervals 00:00 to 06:00 every day. No need to activate the scheduler for any output. Just define it.&lt;br /&gt;
&lt;br /&gt;
[[File:CR15 schedule christmas off.png]]&lt;br /&gt;
&lt;br /&gt;
=== 2. Create sunrise/sunset PAB ===&lt;br /&gt;
&lt;br /&gt;
Following PAB will have &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; result during the day between sunrise with 30 minutes delay and 30 minutes before sunset set for location of NETIO Products headquarters (U pily 103, Prague, CZ). Elevation is set as 247 meters, above sea level. This result will be used in condition in rules to detect sunrise and sunset.&lt;br /&gt;
&lt;br /&gt;
PAB name: '''daylight'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;DAYLIGHT&amp;quot;,&lt;br /&gt;
  &amp;quot;longitude&amp;quot;: &amp;quot;14.4129433E&amp;quot;,&lt;br /&gt;
  &amp;quot;latitude&amp;quot;: &amp;quot;50.0058144N&amp;quot;,&lt;br /&gt;
  &amp;quot;altitude&amp;quot;: 247,&lt;br /&gt;
  &amp;quot;sunriseDelay&amp;quot;: 30,&lt;br /&gt;
  &amp;quot;sunsetDelay&amp;quot;: -30&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Create RULE for output ON ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be enabled (ON). It is combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When is night ( day is false = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: false,&amp;lt;/code&amp;gt;) and in paralel schedule is not active (set to be off = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to ON &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outON'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;AND&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: false,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Create RULE for output OFF ===&lt;br /&gt;
&lt;br /&gt;
In this rule is definition when the output 1 should be disabled (OFF). It is again combination of two conditions of PAB and scheduler.&lt;br /&gt;
&lt;br /&gt;
'''This code is saying:''' When it is day now ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or the schedule is active (set to be on = &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt;) the result is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; and following action (set output 1 to OFF &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt;) is executed. &lt;br /&gt;
&lt;br /&gt;
RULE name: '''outOFF'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;PAB/daylight/DAY&amp;quot;: true,&lt;br /&gt;
    &amp;quot;SCHEDULE/christmas_off/ACTIVE&amp;quot;: true&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CR16 - Digital Inputs - External Switch ON/OFF  &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;==&lt;br /&gt;
Rule is used for managing outputs status in response to change of Digital Inputs (DI) state. Typical example of this solution is connection of external switch ON/OFF into Digital Input (IN) with consequence outputs action.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== External Switch OFF - All Outputs OFF ===&lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 0&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON  - All Outputs ON ===&lt;br /&gt;
Rule name: '''CR16_RULE'''  &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1&lt;br /&gt;
      }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== External Switch ON  - All outputs ON with individual Power Up Sequence ===&lt;br /&gt;
Rule name: '''CR16_RULE''' &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;actions&amp;quot;: {&lt;br /&gt;
    &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;sequence&amp;quot;: {&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 1,&lt;br /&gt;
      &amp;quot;actions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 1000&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;OUTPUTS/2/ACTION&amp;quot;: 1,&lt;br /&gt;
          &amp;quot;delay&amp;quot;: 3000&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tbezstarosta</name></author>
		
	</entry>
</feed>