<?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=Bbakala</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=Bbakala"/>
	<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Special:Contributions/Bbakala"/>
	<updated>2026-04-14T21:12:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1044</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=1044"/>
		<updated>2023-11-29T21:35:07Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* 3. Create RULE for output 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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1043</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=1043"/>
		<updated>2023-11-29T21:34:56Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* 4. Create RULE for output OFF */&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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1042</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=1042"/>
		<updated>2023-11-29T21:34:33Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* 4. Create RULE for output OFF */&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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1041</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=1041"/>
		<updated>2023-11-29T21:31:50Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* CR15 - Sunrise/sunset addaptive schedule with deep night off  FW 4.0.1+ */&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 is day ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or in paralel 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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1040</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=1040"/>
		<updated>2023-11-29T21:31:31Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* CR15 - Sunrise/sunset addaptive schedule with deep night off  FW 4.0.1+ */&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;
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 is day ( day is true = &amp;lt;code&amp;gt;&amp;quot;PAB/daylight/DAY&amp;quot;: true,&amp;lt;/code&amp;gt;) or in paralel 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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1039</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=1039"/>
		<updated>2023-11-29T21:17:13Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* 1. Configure schedule */&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;
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;
=== 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.&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;
=== 4. Create rule for output OFF ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1038</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=1038"/>
		<updated>2023-11-29T21:17:04Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* CR15 - Sunrise/sunset addaptive schedule with deep night offFW 4.0.1+ */&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;
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;
=== 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.&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;
=== 4. Create rule for output OFF ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=File:CR15_schedule_christmas_off.png&amp;diff=1037</id>
		<title>File:CR15 schedule christmas off.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=File:CR15_schedule_christmas_off.png&amp;diff=1037"/>
		<updated>2023-11-29T21:09:23Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&amp;diff=1036</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=1036"/>
		<updated>2023-11-29T21:08:29Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: &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;
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;
=== To get this working 4 steps of configuration as to be done === &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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1035</id>
		<title>Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1035"/>
		<updated>2023-08-28T20:12:36Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* CONDITION */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Rule define the follow-up actions based on current DI / [https://wiki.netio-products.com/index.php?title=PAB '''PAB''']/ [https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog'''] function state. There can be several Rules executed based on one PAB function (switch output if Current &amp;gt; 1000 mA + Send Alert to NETIO Cloud IF Current &amp;gt; 500 mA). One Rule can be executed based on combination of several PAB / WatchDog states.&lt;br /&gt;
&lt;br /&gt;
'''Rules examples are available on page:''' https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&lt;br /&gt;
&lt;br /&gt;
== CONDITION ==&lt;br /&gt;
Rule conditions define when the action part of each Rule is executed. There can be multiple conditions for one Rule. &lt;br /&gt;
In order to execute the action, all conditions have to be valid (AND operator) / at least one of the conditions have to be valid (OR operator).&lt;br /&gt;
&amp;lt;code&amp;gt;bootDelay&amp;lt;/code&amp;gt; parameter &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; can be used to delay rule evaluation after power up (or internal periodic restart). This is useful for example for delay condition and alerts evaluation after PAB blocks are stabilized. (e.g. hysteresis or some delays).  &amp;lt;code&amp;gt;bootDelay&amp;lt;/code&amp;gt; parameter &amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; is specified in seconds [s]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;bootDelay&amp;quot;: 20,&lt;br /&gt;
    &amp;quot;operator&amp;quot;: &amp;quot;OR&amp;quot;,&lt;br /&gt;
    &amp;quot;WDT/test2/FAIL&amp;quot;: true,&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;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Available forms of conditions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB1_1/IN&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB1_1&amp;lt;/code&amp;gt; is in specified interval&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB_ZONE_1/ZONE&amp;quot;: 1&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB_ZONE_1&amp;lt;/code&amp;gt; is in zone 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&amp;lt;/code&amp;gt; = daylight for current time on defined location (for use with DAYLIGHT-type PAB)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;WDT/WATCHDOG_1/FAIL&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;WATCHDOG_1&amp;lt;/code&amp;gt; is in ERROR state&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is currently ON (1)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; = DI1 is currently OFF (0)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after power-cut (external power outage, lower-level system (MCU) firmware update)&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;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_BOOT&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after soft restart (internal watchdog or periodic restart) - no Power Outage, state of outputs not changed&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/ETHERNET/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/WIFI/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
== FILTER (mask)== &lt;br /&gt;
The filter field specifies when the Rule is active. It acts as a mask If filter in certain time is not true, the action wont be executed even when conditions are fulfilled. Multiple filters can be set for one rule. For the rule to be active all filters must be true.&lt;br /&gt;
&lt;br /&gt;
Above that the FILTER can be applied (scheduler, DI (Digital Input) or DO (Output) state). &lt;br /&gt;
&lt;br /&gt;
=== Available forms of filters ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/TestSchedule/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;TestSchedule&amp;lt;/code&amp;gt; is active&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;:&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACTION ==&lt;br /&gt;
ACTIONS part in the Rule contains list of several actions when condition(s) + filter(s) are valid. &lt;br /&gt;
&lt;br /&gt;
The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an Alarm state in NETIO Cloud. &lt;br /&gt;
There is one Alarm state reserved per each one output in the NETIO Cloud premium (only).&lt;br /&gt;
You can verify your configuration and check sending of the Output Alarm in the Device Log. &lt;br /&gt;
&lt;br /&gt;
=== Available forms of actions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt; = Turn OFF Output 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/6/ACTION&amp;quot;: 2&amp;lt;/code&amp;gt; = Short OFF Output 6&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt; = Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)&lt;br /&gt;
&lt;br /&gt;
''Note: The variable &amp;lt;code&amp;gt;${COND_RESULT}&amp;lt;/code&amp;gt; contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard output actions per each output ===&lt;br /&gt;
* 0 = TURN OFF&lt;br /&gt;
* 1 = TURN ON&lt;br /&gt;
* 2 = SHORT OFF&lt;br /&gt;
* 3 = SHORT ON&lt;br /&gt;
* 4 = TOGGLE - Changes the status from ON to OFF and vice versa&lt;br /&gt;
* 5 = NOTHING (placeholder, DO NOT USE)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| conditions&lt;br /&gt;
| Eg: `&amp;quot;PAB/PAB1_1/IN&amp;quot;: true`&lt;br /&gt;
| Conditions definition. Relationship between conditions is defined by &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (AND/OR)&lt;br /&gt;
|-&lt;br /&gt;
| operator&lt;br /&gt;
| AND/OR&lt;br /&gt;
| Optional. Specifies relationship between conditions. &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; = all conditions must apply at the same time. &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt; = at least one condition must apply. If missing, defaults to &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| filters&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/MY_SCHEDULE/ACTIVE&amp;quot;: true&amp;lt;code/&amp;gt;&lt;br /&gt;
| Filter definition. For multiple filter conditions, the relationship between them is always &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Actions definition. All actions defined here will be triggered when conditions (and filters) are met&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Condition names are based on user-specified names and their types:&lt;br /&gt;
* For PABs, the name has structure: &amp;lt;code&amp;gt;PAB/pab_name/pab_output_value&amp;lt;/code&amp;gt; (TRUE/FALSE or int)&lt;br /&gt;
* For WatchDogs, the name has structure:  &amp;lt;code&amp;gt;WDT/watchdog_name/FAIL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence &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;
Sequences bring extended usability to ACTIONS. In addition to basic actions that are triggered right after certain condition (conditions) are met, sequence can be defined to enable repetitive actions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration variables ===&lt;br /&gt;
&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;
| repeat&lt;br /&gt;
| int (0 to 1-MAX_INT) / true&lt;br /&gt;
| How many times should the sequence repeat. Set &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for indefinitely (can only be turned off by disabling the rule).&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| &lt;br /&gt;
| Standard actions as defined in section [[#ACTION| ACTION]]&lt;br /&gt;
|-&lt;br /&gt;
| delay&lt;br /&gt;
| int [ms] in multiples of 100ms&lt;br /&gt;
| '''May''' be set along with actions to be executed. Defines time the sequence waits '''after''' performing the action. The value is rounded up to hundreds of miliseconds (e.g. 85ms -&amp;gt; 100ms, 235ms -&amp;gt; 300ms).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
This example triggers one-time action along with sequence of other actions and repeats 10-times after meeting certain condition.&lt;br /&gt;
:'''Condition''': WatchDog '''CR01_WDT''' fails (receives timeout from defined address)&lt;br /&gt;
:'''One-time action''': Restart output No. 2 (action 2 = short off/restart)&lt;br /&gt;
:''' Sequence ''': Following steps repeat 10-times&lt;br /&gt;
:# Turn output No. 1 ON  &lt;br /&gt;
:# Wait 10s  &lt;br /&gt;
:# Turn output No. 1 OFF&lt;br /&gt;
:# Wait 2s&lt;br /&gt;
:# Repeat&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;
    &amp;quot;sequence&amp;quot;:{&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;actions&amp;quot;:[&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1, &amp;quot;delay&amp;quot;:10000},&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0, &amp;quot;delay&amp;quot;:2000}&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1031</id>
		<title>Watchdog</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1031"/>
		<updated>2023-06-19T18:01:10Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:4.0.0-watchdog.png|thumb|Watchdog diagram]]&lt;br /&gt;
&lt;br /&gt;
Watchdog is a function periodically pinging to one defined IP address or URL. It's periodically checking reply from defined IP device by ping (ICMP). You can monitor physical presence of the IP device or Internet connectivity. You can use several WatchDog functions in parallel. &lt;br /&gt;
&lt;br /&gt;
Based on each Watchdog state one or several RULEs can be executed. Each [https://wiki.netio-products.com/index.php?title=Rules '''Rule'''] can perform several actions (Set Output, Short Off (restart) output, Toggle output or send Alarm state to the NETIO Cloud service. Based on this Alarm state can NETIO Cloud send email to defined recipient. All Watchdogs are listed in the JSON protocol wit their current states. It can be used by 3rd party software. &lt;br /&gt;
&lt;br /&gt;
Each Watchdog function state is the &amp;lt;code&amp;gt;FAIL&amp;lt;/code&amp;gt; variable. &lt;br /&gt;
* Watchdog '''Fail = FALSE''' = ping answer is '''OK'''&lt;br /&gt;
* Watchdog '''Fail = TRUE''' = ping answer '''not received'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt;Once network connection is not active the watchdog is not in operation. To detect these stater use Connectivity events in RULES. &lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| target&lt;br /&gt;
| IP / URL&lt;br /&gt;
| Monitored address&lt;br /&gt;
|-&lt;br /&gt;
| pingInterval&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time interval between pings&lt;br /&gt;
|-&lt;br /&gt;
| timeout&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time waiting for answer&lt;br /&gt;
|-&lt;br /&gt;
| maxTimeouts&lt;br /&gt;
| int&lt;br /&gt;
| Number of failed pings required to evaluate to &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| timeToReboot&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time the Watchdog waits after announcing an error condition before starting a new cycle&lt;br /&gt;
|-&lt;br /&gt;
| maxRestarts&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of restarts when an error condition is declared. After this limit is reached, the WatchDog remains in an &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt; state until the next successful ping.&lt;br /&gt;
If set to 0, WatchDog will restart output (trigger rule) after each FAIL=TRUE is declared and not only if FAIL status is changed (This can cause indefinite restarts when the ping remains unsuccessful).&lt;br /&gt;
&lt;br /&gt;
If set to -1, WatchDog will restart output (trigger rule) only once and then remains in FAIL=TRUE state until next successful ping.&lt;br /&gt;
|-&lt;br /&gt;
| startDelay&lt;br /&gt;
| int&lt;br /&gt;
| Starting delay in seconds at watchdog startup.(Enable or device 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;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.101.130&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1,&lt;br /&gt;
  &amp;quot;startDelay&amp;quot;: 0&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1030</id>
		<title>Watchdog</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1030"/>
		<updated>2023-06-19T17:37:53Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:4.0.0-watchdog.png|thumb|Watchdog diagram]]&lt;br /&gt;
&lt;br /&gt;
Watchdog is a function periodically pinging to one defined IP address or URL. It's periodically checking reply from defined IP device by ping (ICMP). You can monitor physical presence of the IP device or Internet connectivity. You can use several WatchDog functions in parallel. &lt;br /&gt;
&lt;br /&gt;
Based on each Watchdog state one or several RULEs can be executed. Each [https://wiki.netio-products.com/index.php?title=Rules '''Rule'''] can perform several actions (Set Output, Short Off (restart) output, Toggle output or send Alarm state to the NETIO Cloud service. Based on this Alarm state can NETIO Cloud send email to defined recipient. All Watchdogs are listed in the JSON protocol wit their current states. It can be used by 3rd party software. &lt;br /&gt;
&lt;br /&gt;
Each Watchdog function state is the &amp;lt;code&amp;gt;FAIL&amp;lt;/code&amp;gt; variable. &lt;br /&gt;
* Watchdog '''Fail = FALSE''' = ping answer is '''OK'''&lt;br /&gt;
* Watchdog '''Fail = TRUE''' = ping answer '''not received'''&lt;br /&gt;
&lt;br /&gt;
Once network connection is not active the watchdog is not in operation. To detect these stater use Connectivity events in RULES. &lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| target&lt;br /&gt;
| IP / URL&lt;br /&gt;
| Monitored address&lt;br /&gt;
|-&lt;br /&gt;
| pingInterval&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time interval between pings&lt;br /&gt;
|-&lt;br /&gt;
| timeout&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time waiting for answer&lt;br /&gt;
|-&lt;br /&gt;
| maxTimeouts&lt;br /&gt;
| int&lt;br /&gt;
| Number of failed pings required to evaluate to &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| timeToReboot&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time the Watchdog waits after announcing an error condition before starting a new cycle&lt;br /&gt;
|-&lt;br /&gt;
| maxRestarts&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of restarts when an error condition is declared. After this limit is reached, the WatchDog remains in an &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt; state until the next successful ping.&lt;br /&gt;
If set to 0, WatchDog will restart output (trigger rule) after each FAIL=TRUE is declared and not only if FAIL status is changed (This can cause indefinite restarts when the ping remains unsuccessful).&lt;br /&gt;
&lt;br /&gt;
If set to -1, WatchDog will restart output (trigger rule) only once and then remains in FAIL=TRUE state until next successful ping.&lt;br /&gt;
|-&lt;br /&gt;
| startDelay&lt;br /&gt;
| int&lt;br /&gt;
| Starting delay in seconds at watchdog startup.(Enable or device 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;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.101.130&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1,&lt;br /&gt;
  &amp;quot;startDelay&amp;quot;: 0&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1029</id>
		<title>Watchdog</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1029"/>
		<updated>2023-06-19T17:34:52Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:4.0.0-watchdog.png|thumb|Watchdog diagram]]&lt;br /&gt;
&lt;br /&gt;
Watchdog is a function periodically pinging to one defined IP address or URL. It's periodically checking reply from defined IP device by ping (ICMP). You can monitor physical presence of the IP device or Internet connectivity. You can use several WatchDog functions in parallel. &lt;br /&gt;
&lt;br /&gt;
Based on each Watchdog state one or several RULEs can be executed. Each [https://wiki.netio-products.com/index.php?title=Rules '''Rule'''] can perform several actions (Set Output, Short Off (restart) output, Toggle output or send Alarm state to the NETIO Cloud service. Based on this Alarm state can NETIO Cloud send email to defined recipient. All Watchdogs are listed in the JSON protocol wit their current states. It can be used by 3rd party software. &lt;br /&gt;
&lt;br /&gt;
Each Watchdog function state is the &amp;lt;code&amp;gt;FAIL&amp;lt;/code&amp;gt; variable. &lt;br /&gt;
* Watchdog '''Fail = FALSE''' = ping answer is '''OK'''&lt;br /&gt;
* Watchdog '''Fail = TRUE''' = ping answer '''not received'''&lt;br /&gt;
&lt;br /&gt;
Once network connection is not active the watchdog is not in operation. To detect these stater use Connectivity events in RULES. &lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| target&lt;br /&gt;
| IP / URL&lt;br /&gt;
| Monitored address&lt;br /&gt;
|-&lt;br /&gt;
| pingInterval&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time interval between pings&lt;br /&gt;
|-&lt;br /&gt;
| timeout&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time waiting for answer&lt;br /&gt;
|-&lt;br /&gt;
| maxTimeouts&lt;br /&gt;
| int&lt;br /&gt;
| Number of failed pings required to evaluate to &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| timeToReboot&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time the Watchdog waits after announcing an error condition before starting a new cycle&lt;br /&gt;
|-&lt;br /&gt;
| maxRestarts&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of restarts when an error condition is declared. After this limit is reached, the WatchDog remains in an &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt; state until the next successful ping.&lt;br /&gt;
If set to 0, WatchDog will restart after each FAIL=TRUE is declared (This can cause indefinite restarts when the ping remains unsuccessful).&lt;br /&gt;
&lt;br /&gt;
If set to -1, WatchDog will NOT restart itself again. E.g. it remains in FAIL=TRUE state after it is declared.&lt;br /&gt;
|-&lt;br /&gt;
| startDelay&lt;br /&gt;
| int&lt;br /&gt;
| Starting delay in seconds at watchdog startup.(Enable or device 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;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.101.130&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1,&lt;br /&gt;
  &amp;quot;startDelay&amp;quot;: 0&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1028</id>
		<title>Watchdog</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Watchdog&amp;diff=1028"/>
		<updated>2023-06-19T17:33:50Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:4.0.0-watchdog.png|thumb|Watchdog diagram]]&lt;br /&gt;
&lt;br /&gt;
Watchdog is a function periodically pinging to one defined IP address or URL. It's periodically checking reply from defined IP device by ping (ICMP). You can monitor physical presence of the IP device or Internet connectivity. You can use several WatchDog functions in parallel. &lt;br /&gt;
&lt;br /&gt;
Based on each Watchdog state one or several RULEs can be executed. Each [https://wiki.netio-products.com/index.php?title=Rules '''Rule'''] can perform several actions (Set Output, Short Off (restart) output, Toggle output or send Alarm state to the NETIO Cloud service. Based on this Alarm state can NETIO Cloud send email to defined recipient. All Watchdogs are listed in the JSON protocol wit their current states. It can be used by 3rd party software. &lt;br /&gt;
&lt;br /&gt;
Each Watchdog function state is the &amp;lt;code&amp;gt;FAIL&amp;lt;/code&amp;gt; variable. &lt;br /&gt;
* Watchdog '''Fail = FALSE''' = ping answer is '''OK'''&lt;br /&gt;
* Watchdog '''Fail = TRUE''' = ping answer '''not received'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| target&lt;br /&gt;
| IP / URL&lt;br /&gt;
| Monitored address&lt;br /&gt;
|-&lt;br /&gt;
| pingInterval&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time interval between pings&lt;br /&gt;
|-&lt;br /&gt;
| timeout&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time waiting for answer&lt;br /&gt;
|-&lt;br /&gt;
| maxTimeouts&lt;br /&gt;
| int&lt;br /&gt;
| Number of failed pings required to evaluate to &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| timeToReboot&lt;br /&gt;
| int&lt;br /&gt;
| '''[s]''' Time the Watchdog waits after announcing an error condition before starting a new cycle&lt;br /&gt;
|-&lt;br /&gt;
| maxRestarts&lt;br /&gt;
| int&lt;br /&gt;
| Maximum number of restarts when an error condition is declared. After this limit is reached, the WatchDog remains in an &amp;lt;code&amp;gt;FAIL=TRUE&amp;lt;/code&amp;gt; state until the next successful ping.&lt;br /&gt;
If set to 0, WatchDog will restart after each FAIL=TRUE is declared (This can cause indefinite restarts when the ping remains unsuccessful).&lt;br /&gt;
&lt;br /&gt;
If set to -1, WatchDog will NOT restart itself again. E.g. it remains in FAIL=TRUE state after it is declared.&lt;br /&gt;
|-&lt;br /&gt;
| startDelay&lt;br /&gt;
| int&lt;br /&gt;
| Starting delay in seconds at watchdog startup.(Enable or device 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;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;192.168.101.130&amp;quot;,&lt;br /&gt;
  &amp;quot;pingInterval&amp;quot;: 5,&lt;br /&gt;
  &amp;quot;timeout&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;maxTimeouts&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;timeToReboot&amp;quot;: 10,&lt;br /&gt;
  &amp;quot;maxRestarts&amp;quot;: -1,&lt;br /&gt;
  &amp;quot;startDelay&amp;quot;: 0&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=File:4.0.0-watchdog.png&amp;diff=1027</id>
		<title>File:4.0.0-watchdog.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=File:4.0.0-watchdog.png&amp;diff=1027"/>
		<updated>2023-06-19T17:32:53Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: NETIO Watchdog functional diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
NETIO Watchdog functional diagram&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1025</id>
		<title>Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1025"/>
		<updated>2023-06-19T17:19:44Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* CONDITION */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Rule define the follow-up actions based on current DI / [https://wiki.netio-products.com/index.php?title=PAB '''PAB''']/ [https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog'''] function state. There can be several Rules executed based on one PAB function (switch output if Current &amp;gt; 1000 mA + Send Alert to NETIO Cloud IF Current &amp;gt; 500 mA). One Rule can be executed based on combination of several PAB / WatchDog states.&lt;br /&gt;
&lt;br /&gt;
'''Rules examples are available on page:''' https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&lt;br /&gt;
&lt;br /&gt;
== CONDITION ==&lt;br /&gt;
Rule conditions define when the action part of each Rule is executed. There can be multiple conditions for one Rule. &lt;br /&gt;
In order to execute the action, all conditions have to be valid (AND operator) / at least one of the conditions have to be valid (OR operator).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Example:&amp;lt;/b&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;WDT/test2/FAIL&amp;quot;: true,&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;: 4&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Available forms of conditions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB1_1/IN&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB1_1&amp;lt;/code&amp;gt; is in specified interval&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB_ZONE_1/ZONE&amp;quot;: 1&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB_ZONE_1&amp;lt;/code&amp;gt; is in zone 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&amp;lt;/code&amp;gt; = daylight for current time on defined location (for use with DAYLIGHT-type PAB)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;WDT/WATCHDOG_1/FAIL&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;WATCHDOG_1&amp;lt;/code&amp;gt; is in ERROR state&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is currently ON (1)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; = DI1 is currently OFF (0)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after power-cut (external power outage, lower-level system (MCU) firmware update)&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;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_BOOT&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after soft restart (internal watchdog or periodic restart) - no Power Outage, state of outputs not changed&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/ETHERNET/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/WIFI/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
== FILTER (mask)== &lt;br /&gt;
The filter field specifies when the Rule is active. It acts as a mask If filter in certain time is not true, the action wont be executed even when conditions are fulfilled. Multiple filters can be set for one rule. For the rule to be active all filters must be true.&lt;br /&gt;
&lt;br /&gt;
Above that the FILTER can be applied (scheduler, DI (Digital Input) or DO (Output) state). &lt;br /&gt;
&lt;br /&gt;
=== Available forms of filters ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/TestSchedule/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;TestSchedule&amp;lt;/code&amp;gt; is active&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;:&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACTION ==&lt;br /&gt;
ACTIONS part in the Rule contains list of several actions when condition(s) + filter(s) are valid. &lt;br /&gt;
&lt;br /&gt;
The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an Alarm state in NETIO Cloud. &lt;br /&gt;
There is one Alarm state reserved per each one output in the NETIO Cloud premium (only).&lt;br /&gt;
You can verify your configuration and check sending of the Output Alarm in the Device Log. &lt;br /&gt;
&lt;br /&gt;
=== Available forms of actions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt; = Turn OFF Output 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/6/ACTION&amp;quot;: 2&amp;lt;/code&amp;gt; = Short OFF Output 6&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt; = Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)&lt;br /&gt;
&lt;br /&gt;
''Note: The variable &amp;lt;code&amp;gt;${COND_RESULT}&amp;lt;/code&amp;gt; contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard output actions per each output ===&lt;br /&gt;
* 0 = TURN OFF&lt;br /&gt;
* 1 = TURN ON&lt;br /&gt;
* 2 = SHORT OFF&lt;br /&gt;
* 3 = SHORT ON&lt;br /&gt;
* 4 = TOGGLE - Changes the status from ON to OFF and vice versa&lt;br /&gt;
* 5 = NOTHING (placeholder, DO NOT USE)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| conditions&lt;br /&gt;
| Eg: `&amp;quot;PAB/PAB1_1/IN&amp;quot;: true`&lt;br /&gt;
| Conditions definition. Relationship between conditions is defined by &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (AND/OR)&lt;br /&gt;
|-&lt;br /&gt;
| operator&lt;br /&gt;
| AND/OR&lt;br /&gt;
| Optional. Specifies relationship between conditions. &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; = all conditions must apply at the same time. &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt; = at least one condition must apply. If missing, defaults to &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| filters&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/MY_SCHEDULE/ACTIVE&amp;quot;: true&amp;lt;code/&amp;gt;&lt;br /&gt;
| Filter definition. For multiple filter conditions, the relationship between them is always &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Actions definition. All actions defined here will be triggered when conditions (and filters) are met&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Condition names are based on user-specified names and their types:&lt;br /&gt;
* For PABs, the name has structure: &amp;lt;code&amp;gt;PAB/pab_name/pab_output_value&amp;lt;/code&amp;gt; (TRUE/FALSE or int)&lt;br /&gt;
* For WatchDogs, the name has structure:  &amp;lt;code&amp;gt;WDT/watchdog_name/FAIL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence &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;
Sequences bring extended usability to ACTIONS. In addition to basic actions that are triggered right after certain condition (conditions) are met, sequence can be defined to enable repetitive actions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration variables ===&lt;br /&gt;
&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;
| repeat&lt;br /&gt;
| int (0 to 1-MAX_INT) / true&lt;br /&gt;
| How many times should the sequence repeat. Set &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for indefinitely (can only be turned off by disabling the rule).&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| &lt;br /&gt;
| Standard actions as defined in section [[#ACTION| ACTION]]&lt;br /&gt;
|-&lt;br /&gt;
| delay&lt;br /&gt;
| int [ms] in multiples of 100ms&lt;br /&gt;
| '''May''' be set along with actions to be executed. Defines time the sequence waits '''after''' performing the action. The value is rounded up to hundreds of miliseconds (e.g. 85ms -&amp;gt; 100ms, 235ms -&amp;gt; 300ms).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
This example triggers one-time action along with sequence of other actions and repeats 10-times after meeting certain condition.&lt;br /&gt;
:'''Condition''': WatchDog '''CR01_WDT''' fails (receives timeout from defined address)&lt;br /&gt;
:'''One-time action''': Restart output No. 2 (action 2 = short off/restart)&lt;br /&gt;
:''' Sequence ''': Following steps repeat 10-times&lt;br /&gt;
:# Turn output No. 1 ON  &lt;br /&gt;
:# Wait 10s  &lt;br /&gt;
:# Turn output No. 1 OFF&lt;br /&gt;
:# Wait 2s&lt;br /&gt;
:# Repeat&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;
    &amp;quot;sequence&amp;quot;:{&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;actions&amp;quot;:[&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1, &amp;quot;delay&amp;quot;:10000},&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0, &amp;quot;delay&amp;quot;:2000}&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1024</id>
		<title>Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1024"/>
		<updated>2023-06-19T17:17:08Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Available forms of conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Rule define the follow-up actions based on current DI / [https://wiki.netio-products.com/index.php?title=PAB '''PAB''']/ [https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog'''] function state. There can be several Rules executed based on one PAB function (switch output if Current &amp;gt; 1000 mA + Send Alert to NETIO Cloud IF Current &amp;gt; 500 mA). One Rule can be executed based on combination of several PAB / WatchDog states.&lt;br /&gt;
&lt;br /&gt;
'''Rules examples are available on page:''' https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&lt;br /&gt;
&lt;br /&gt;
== CONDITION ==&lt;br /&gt;
Rule conditions define when the action part of each Rule is executed. There can be multiple conditions for one Rule. &lt;br /&gt;
In order to execute the action, all conditions have to be valid (AND operator) / at least one of the conditions have to be valid (OR operator).&lt;br /&gt;
&lt;br /&gt;
=== Available forms of conditions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB1_1/IN&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB1_1&amp;lt;/code&amp;gt; is in specified interval&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB_ZONE_1/ZONE&amp;quot;: 1&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB_ZONE_1&amp;lt;/code&amp;gt; is in zone 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&amp;lt;/code&amp;gt; = daylight for current time on defined location (for use with DAYLIGHT-type PAB)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;WDT/WATCHDOG_1/FAIL&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;WATCHDOG_1&amp;lt;/code&amp;gt; is in ERROR state&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is currently ON (1)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; = DI1 is currently OFF (0)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after power-cut (external power outage, lower-level system (MCU) firmware update)&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;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_BOOT&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after soft restart (internal watchdog or periodic restart) - no Power Outage, state of outputs not changed&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/ETHERNET/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/WIFI/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&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;
== FILTER (mask)== &lt;br /&gt;
The filter field specifies when the Rule is active. It acts as a mask If filter in certain time is not true, the action wont be executed even when conditions are fulfilled. Multiple filters can be set for one rule. For the rule to be active all filters must be true.&lt;br /&gt;
&lt;br /&gt;
Above that the FILTER can be applied (scheduler, DI (Digital Input) or DO (Output) state). &lt;br /&gt;
&lt;br /&gt;
=== Available forms of filters ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/TestSchedule/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;TestSchedule&amp;lt;/code&amp;gt; is active&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;:&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACTION ==&lt;br /&gt;
ACTIONS part in the Rule contains list of several actions when condition(s) + filter(s) are valid. &lt;br /&gt;
&lt;br /&gt;
The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an Alarm state in NETIO Cloud. &lt;br /&gt;
There is one Alarm state reserved per each one output in the NETIO Cloud premium (only).&lt;br /&gt;
You can verify your configuration and check sending of the Output Alarm in the Device Log. &lt;br /&gt;
&lt;br /&gt;
=== Available forms of actions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt; = Turn OFF Output 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/6/ACTION&amp;quot;: 2&amp;lt;/code&amp;gt; = Short OFF Output 6&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt; = Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)&lt;br /&gt;
&lt;br /&gt;
''Note: The variable &amp;lt;code&amp;gt;${COND_RESULT}&amp;lt;/code&amp;gt; contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard output actions per each output ===&lt;br /&gt;
* 0 = TURN OFF&lt;br /&gt;
* 1 = TURN ON&lt;br /&gt;
* 2 = SHORT OFF&lt;br /&gt;
* 3 = SHORT ON&lt;br /&gt;
* 4 = TOGGLE - Changes the status from ON to OFF and vice versa&lt;br /&gt;
* 5 = NOTHING (placeholder, DO NOT USE)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| conditions&lt;br /&gt;
| Eg: `&amp;quot;PAB/PAB1_1/IN&amp;quot;: true`&lt;br /&gt;
| Conditions definition. Relationship between conditions is defined by &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (AND/OR)&lt;br /&gt;
|-&lt;br /&gt;
| operator&lt;br /&gt;
| AND/OR&lt;br /&gt;
| Optional. Specifies relationship between conditions. &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; = all conditions must apply at the same time. &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt; = at least one condition must apply. If missing, defaults to &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| filters&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/MY_SCHEDULE/ACTIVE&amp;quot;: true&amp;lt;code/&amp;gt;&lt;br /&gt;
| Filter definition. For multiple filter conditions, the relationship between them is always &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Actions definition. All actions defined here will be triggered when conditions (and filters) are met&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Condition names are based on user-specified names and their types:&lt;br /&gt;
* For PABs, the name has structure: &amp;lt;code&amp;gt;PAB/pab_name/pab_output_value&amp;lt;/code&amp;gt; (TRUE/FALSE or int)&lt;br /&gt;
* For WatchDogs, the name has structure:  &amp;lt;code&amp;gt;WDT/watchdog_name/FAIL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence &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;
Sequences bring extended usability to ACTIONS. In addition to basic actions that are triggered right after certain condition (conditions) are met, sequence can be defined to enable repetitive actions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration variables ===&lt;br /&gt;
&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;
| repeat&lt;br /&gt;
| int (0 to 1-MAX_INT) / true&lt;br /&gt;
| How many times should the sequence repeat. Set &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for indefinitely (can only be turned off by disabling the rule).&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| &lt;br /&gt;
| Standard actions as defined in section [[#ACTION| ACTION]]&lt;br /&gt;
|-&lt;br /&gt;
| delay&lt;br /&gt;
| int [ms] in multiples of 100ms&lt;br /&gt;
| '''May''' be set along with actions to be executed. Defines time the sequence waits '''after''' performing the action. The value is rounded up to hundreds of miliseconds (e.g. 85ms -&amp;gt; 100ms, 235ms -&amp;gt; 300ms).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
This example triggers one-time action along with sequence of other actions and repeats 10-times after meeting certain condition.&lt;br /&gt;
:'''Condition''': WatchDog '''CR01_WDT''' fails (receives timeout from defined address)&lt;br /&gt;
:'''One-time action''': Restart output No. 2 (action 2 = short off/restart)&lt;br /&gt;
:''' Sequence ''': Following steps repeat 10-times&lt;br /&gt;
:# Turn output No. 1 ON  &lt;br /&gt;
:# Wait 10s  &lt;br /&gt;
:# Turn output No. 1 OFF&lt;br /&gt;
:# Wait 2s&lt;br /&gt;
:# Repeat&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;
    &amp;quot;sequence&amp;quot;:{&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;actions&amp;quot;:[&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1, &amp;quot;delay&amp;quot;:10000},&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0, &amp;quot;delay&amp;quot;:2000}&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1023</id>
		<title>Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1023"/>
		<updated>2023-06-19T17:16:40Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Available forms of conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Rule define the follow-up actions based on current DI / [https://wiki.netio-products.com/index.php?title=PAB '''PAB''']/ [https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog'''] function state. There can be several Rules executed based on one PAB function (switch output if Current &amp;gt; 1000 mA + Send Alert to NETIO Cloud IF Current &amp;gt; 500 mA). One Rule can be executed based on combination of several PAB / WatchDog states.&lt;br /&gt;
&lt;br /&gt;
'''Rules examples are available on page:''' https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&lt;br /&gt;
&lt;br /&gt;
== CONDITION ==&lt;br /&gt;
Rule conditions define when the action part of each Rule is executed. There can be multiple conditions for one Rule. &lt;br /&gt;
In order to execute the action, all conditions have to be valid (AND operator) / at least one of the conditions have to be valid (OR operator).&lt;br /&gt;
&lt;br /&gt;
=== Available forms of conditions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB1_1/IN&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB1_1&amp;lt;/code&amp;gt; is in specified interval&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB_ZONE_1/ZONE&amp;quot;: 1&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB_ZONE_1&amp;lt;/code&amp;gt; is in zone 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&amp;lt;/code&amp;gt; = daylight for current time on defined location (for use with DAYLIGHT-type PAB)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;WDT/WATCHDOG_1/FAIL&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;WATCHDOG_1&amp;lt;/code&amp;gt; is in ERROR state&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is currently ON (1)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; = DI1 is currently OFF (0)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&amp;lt;/code&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; = device boot after power-cut (external power outage, lower-level system (MCU) firmware update)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_BOOT&amp;quot;: true&amp;lt;/code&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; = device boot after soft restart (internal watchdog or periodic restart) - no Power Outage, state of outputs not changed&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/ETHERNET/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/WIFI/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;sup&amp;gt;&amp;lt;code&amp;gt;FW 4.0.0+&amp;lt;/code&amp;gt;&amp;lt;/sup&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&lt;br /&gt;
&lt;br /&gt;
== FILTER (mask)== &lt;br /&gt;
The filter field specifies when the Rule is active. It acts as a mask If filter in certain time is not true, the action wont be executed even when conditions are fulfilled. Multiple filters can be set for one rule. For the rule to be active all filters must be true.&lt;br /&gt;
&lt;br /&gt;
Above that the FILTER can be applied (scheduler, DI (Digital Input) or DO (Output) state). &lt;br /&gt;
&lt;br /&gt;
=== Available forms of filters ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/TestSchedule/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;TestSchedule&amp;lt;/code&amp;gt; is active&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;:&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACTION ==&lt;br /&gt;
ACTIONS part in the Rule contains list of several actions when condition(s) + filter(s) are valid. &lt;br /&gt;
&lt;br /&gt;
The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an Alarm state in NETIO Cloud. &lt;br /&gt;
There is one Alarm state reserved per each one output in the NETIO Cloud premium (only).&lt;br /&gt;
You can verify your configuration and check sending of the Output Alarm in the Device Log. &lt;br /&gt;
&lt;br /&gt;
=== Available forms of actions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt; = Turn OFF Output 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/6/ACTION&amp;quot;: 2&amp;lt;/code&amp;gt; = Short OFF Output 6&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt; = Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)&lt;br /&gt;
&lt;br /&gt;
''Note: The variable &amp;lt;code&amp;gt;${COND_RESULT}&amp;lt;/code&amp;gt; contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard output actions per each output ===&lt;br /&gt;
* 0 = TURN OFF&lt;br /&gt;
* 1 = TURN ON&lt;br /&gt;
* 2 = SHORT OFF&lt;br /&gt;
* 3 = SHORT ON&lt;br /&gt;
* 4 = TOGGLE - Changes the status from ON to OFF and vice versa&lt;br /&gt;
* 5 = NOTHING (placeholder, DO NOT USE)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| conditions&lt;br /&gt;
| Eg: `&amp;quot;PAB/PAB1_1/IN&amp;quot;: true`&lt;br /&gt;
| Conditions definition. Relationship between conditions is defined by &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (AND/OR)&lt;br /&gt;
|-&lt;br /&gt;
| operator&lt;br /&gt;
| AND/OR&lt;br /&gt;
| Optional. Specifies relationship between conditions. &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; = all conditions must apply at the same time. &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt; = at least one condition must apply. If missing, defaults to &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| filters&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/MY_SCHEDULE/ACTIVE&amp;quot;: true&amp;lt;code/&amp;gt;&lt;br /&gt;
| Filter definition. For multiple filter conditions, the relationship between them is always &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Actions definition. All actions defined here will be triggered when conditions (and filters) are met&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Condition names are based on user-specified names and their types:&lt;br /&gt;
* For PABs, the name has structure: &amp;lt;code&amp;gt;PAB/pab_name/pab_output_value&amp;lt;/code&amp;gt; (TRUE/FALSE or int)&lt;br /&gt;
* For WatchDogs, the name has structure:  &amp;lt;code&amp;gt;WDT/watchdog_name/FAIL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence &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;
Sequences bring extended usability to ACTIONS. In addition to basic actions that are triggered right after certain condition (conditions) are met, sequence can be defined to enable repetitive actions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration variables ===&lt;br /&gt;
&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;
| repeat&lt;br /&gt;
| int (0 to 1-MAX_INT) / true&lt;br /&gt;
| How many times should the sequence repeat. Set &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for indefinitely (can only be turned off by disabling the rule).&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| &lt;br /&gt;
| Standard actions as defined in section [[#ACTION| ACTION]]&lt;br /&gt;
|-&lt;br /&gt;
| delay&lt;br /&gt;
| int [ms] in multiples of 100ms&lt;br /&gt;
| '''May''' be set along with actions to be executed. Defines time the sequence waits '''after''' performing the action. The value is rounded up to hundreds of miliseconds (e.g. 85ms -&amp;gt; 100ms, 235ms -&amp;gt; 300ms).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
This example triggers one-time action along with sequence of other actions and repeats 10-times after meeting certain condition.&lt;br /&gt;
:'''Condition''': WatchDog '''CR01_WDT''' fails (receives timeout from defined address)&lt;br /&gt;
:'''One-time action''': Restart output No. 2 (action 2 = short off/restart)&lt;br /&gt;
:''' Sequence ''': Following steps repeat 10-times&lt;br /&gt;
:# Turn output No. 1 ON  &lt;br /&gt;
:# Wait 10s  &lt;br /&gt;
:# Turn output No. 1 OFF&lt;br /&gt;
:# Wait 2s&lt;br /&gt;
:# Repeat&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;
    &amp;quot;sequence&amp;quot;:{&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;actions&amp;quot;:[&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1, &amp;quot;delay&amp;quot;:10000},&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0, &amp;quot;delay&amp;quot;:2000}&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1022</id>
		<title>Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1022"/>
		<updated>2023-06-19T17:15:15Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Available forms of conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Rule define the follow-up actions based on current DI / [https://wiki.netio-products.com/index.php?title=PAB '''PAB''']/ [https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog'''] function state. There can be several Rules executed based on one PAB function (switch output if Current &amp;gt; 1000 mA + Send Alert to NETIO Cloud IF Current &amp;gt; 500 mA). One Rule can be executed based on combination of several PAB / WatchDog states.&lt;br /&gt;
&lt;br /&gt;
'''Rules examples are available on page:''' https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&lt;br /&gt;
&lt;br /&gt;
== CONDITION ==&lt;br /&gt;
Rule conditions define when the action part of each Rule is executed. There can be multiple conditions for one Rule. &lt;br /&gt;
In order to execute the action, all conditions have to be valid (AND operator) / at least one of the conditions have to be valid (OR operator).&lt;br /&gt;
&lt;br /&gt;
=== Available forms of conditions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB1_1/IN&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB1_1&amp;lt;/code&amp;gt; is in specified interval&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB_ZONE_1/ZONE&amp;quot;: 1&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB_ZONE_1&amp;lt;/code&amp;gt; is in zone 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&amp;lt;/code&amp;gt; = daylight for current time on defined location (for use with DAYLIGHT-type PAB)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;WDT/WATCHDOG_1/FAIL&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;WATCHDOG_1&amp;lt;/code&amp;gt; is in ERROR state&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is currently ON (1)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; = DI1 is currently OFF (0)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after power-cut (external power outage, lower-level system (MCU) firmware update)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_BOOT&amp;quot;: true&amp;lt;/code&amp;gt; = = device boot after soft restart (internal watchdog or periodic restart) - no Power Outage, state of outputs not changed&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/ETHERNET/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;NETWORK/WIFI/STATE&amp;quot;: &amp;quot;down&amp;quot;&amp;lt;/code&amp;gt; = indicates network connection status, states: &amp;quot;up&amp;quot; - device is connected, &amp;quot;down&amp;quot; - device is not connected&lt;br /&gt;
&lt;br /&gt;
== FILTER (mask)== &lt;br /&gt;
The filter field specifies when the Rule is active. It acts as a mask If filter in certain time is not true, the action wont be executed even when conditions are fulfilled. Multiple filters can be set for one rule. For the rule to be active all filters must be true.&lt;br /&gt;
&lt;br /&gt;
Above that the FILTER can be applied (scheduler, DI (Digital Input) or DO (Output) state). &lt;br /&gt;
&lt;br /&gt;
=== Available forms of filters ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/TestSchedule/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;TestSchedule&amp;lt;/code&amp;gt; is active&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;:&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACTION ==&lt;br /&gt;
ACTIONS part in the Rule contains list of several actions when condition(s) + filter(s) are valid. &lt;br /&gt;
&lt;br /&gt;
The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an Alarm state in NETIO Cloud. &lt;br /&gt;
There is one Alarm state reserved per each one output in the NETIO Cloud premium (only).&lt;br /&gt;
You can verify your configuration and check sending of the Output Alarm in the Device Log. &lt;br /&gt;
&lt;br /&gt;
=== Available forms of actions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt; = Turn OFF Output 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/6/ACTION&amp;quot;: 2&amp;lt;/code&amp;gt; = Short OFF Output 6&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt; = Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)&lt;br /&gt;
&lt;br /&gt;
''Note: The variable &amp;lt;code&amp;gt;${COND_RESULT}&amp;lt;/code&amp;gt; contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard output actions per each output ===&lt;br /&gt;
* 0 = TURN OFF&lt;br /&gt;
* 1 = TURN ON&lt;br /&gt;
* 2 = SHORT OFF&lt;br /&gt;
* 3 = SHORT ON&lt;br /&gt;
* 4 = TOGGLE - Changes the status from ON to OFF and vice versa&lt;br /&gt;
* 5 = NOTHING (placeholder, DO NOT USE)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| conditions&lt;br /&gt;
| Eg: `&amp;quot;PAB/PAB1_1/IN&amp;quot;: true`&lt;br /&gt;
| Conditions definition. Relationship between conditions is defined by &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (AND/OR)&lt;br /&gt;
|-&lt;br /&gt;
| operator&lt;br /&gt;
| AND/OR&lt;br /&gt;
| Optional. Specifies relationship between conditions. &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; = all conditions must apply at the same time. &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt; = at least one condition must apply. If missing, defaults to &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| filters&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/MY_SCHEDULE/ACTIVE&amp;quot;: true&amp;lt;code/&amp;gt;&lt;br /&gt;
| Filter definition. For multiple filter conditions, the relationship between them is always &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Actions definition. All actions defined here will be triggered when conditions (and filters) are met&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Condition names are based on user-specified names and their types:&lt;br /&gt;
* For PABs, the name has structure: &amp;lt;code&amp;gt;PAB/pab_name/pab_output_value&amp;lt;/code&amp;gt; (TRUE/FALSE or int)&lt;br /&gt;
* For WatchDogs, the name has structure:  &amp;lt;code&amp;gt;WDT/watchdog_name/FAIL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence &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;
Sequences bring extended usability to ACTIONS. In addition to basic actions that are triggered right after certain condition (conditions) are met, sequence can be defined to enable repetitive actions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration variables ===&lt;br /&gt;
&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;
| repeat&lt;br /&gt;
| int (0 to 1-MAX_INT) / true&lt;br /&gt;
| How many times should the sequence repeat. Set &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for indefinitely (can only be turned off by disabling the rule).&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| &lt;br /&gt;
| Standard actions as defined in section [[#ACTION| ACTION]]&lt;br /&gt;
|-&lt;br /&gt;
| delay&lt;br /&gt;
| int [ms] in multiples of 100ms&lt;br /&gt;
| '''May''' be set along with actions to be executed. Defines time the sequence waits '''after''' performing the action. The value is rounded up to hundreds of miliseconds (e.g. 85ms -&amp;gt; 100ms, 235ms -&amp;gt; 300ms).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
This example triggers one-time action along with sequence of other actions and repeats 10-times after meeting certain condition.&lt;br /&gt;
:'''Condition''': WatchDog '''CR01_WDT''' fails (receives timeout from defined address)&lt;br /&gt;
:'''One-time action''': Restart output No. 2 (action 2 = short off/restart)&lt;br /&gt;
:''' Sequence ''': Following steps repeat 10-times&lt;br /&gt;
:# Turn output No. 1 ON  &lt;br /&gt;
:# Wait 10s  &lt;br /&gt;
:# Turn output No. 1 OFF&lt;br /&gt;
:# Wait 2s&lt;br /&gt;
:# Repeat&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;
    &amp;quot;sequence&amp;quot;:{&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;actions&amp;quot;:[&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1, &amp;quot;delay&amp;quot;:10000},&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0, &amp;quot;delay&amp;quot;:2000}&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1021</id>
		<title>Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=Rules&amp;diff=1021"/>
		<updated>2023-06-19T17:09:51Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Available forms of conditions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Each Rule define the follow-up actions based on current DI / [https://wiki.netio-products.com/index.php?title=PAB '''PAB''']/ [https://wiki.netio-products.com/index.php?title=Watchdog '''WatchDog'''] function state. There can be several Rules executed based on one PAB function (switch output if Current &amp;gt; 1000 mA + Send Alert to NETIO Cloud IF Current &amp;gt; 500 mA). One Rule can be executed based on combination of several PAB / WatchDog states.&lt;br /&gt;
&lt;br /&gt;
'''Rules examples are available on page:''' https://wiki.netio-products.com/index.php?title=Rules_Complete_Examples&lt;br /&gt;
&lt;br /&gt;
== CONDITION ==&lt;br /&gt;
Rule conditions define when the action part of each Rule is executed. There can be multiple conditions for one Rule. &lt;br /&gt;
In order to execute the action, all conditions have to be valid (AND operator) / at least one of the conditions have to be valid (OR operator).&lt;br /&gt;
&lt;br /&gt;
=== Available forms of conditions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB1_1/IN&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB1_1&amp;lt;/code&amp;gt; is in specified interval&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/PAB_ZONE_1/ZONE&amp;quot;: 1&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;PAB_ZONE_1&amp;lt;/code&amp;gt; is in zone 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;PAB/CR13_PAB/DAY&amp;quot;: true&amp;lt;/code&amp;gt; = daylight for current time on defined location (for use with DAYLIGHT-type PAB)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;WDT/WATCHDOG_1/FAIL&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;WATCHDOG_1&amp;lt;/code&amp;gt; is in ERROR state&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;: &amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is currently ON (1)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;INPUTS/1/STATE&amp;quot;: &amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; = DI1 is currently OFF (0)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_POWER_UP&amp;quot;: true&amp;lt;/code&amp;gt; = device boot after power-cut (external power outage, lower-level system (MCU) firmware update)&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SYSTEM/DEVICE_BOOT&amp;quot;: true&amp;lt;/code&amp;gt; = = device boot after soft restart (internal watchdog or periodic restart) - no Power Outage, state of outputs not changed&lt;br /&gt;
&lt;br /&gt;
== FILTER (mask)== &lt;br /&gt;
The filter field specifies when the Rule is active. It acts as a mask If filter in certain time is not true, the action wont be executed even when conditions are fulfilled. Multiple filters can be set for one rule. For the rule to be active all filters must be true.&lt;br /&gt;
&lt;br /&gt;
Above that the FILTER can be applied (scheduler, DI (Digital Input) or DO (Output) state). &lt;br /&gt;
&lt;br /&gt;
=== Available forms of filters ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/TestSchedule/ACTIVE&amp;quot;: true&amp;lt;/code&amp;gt; = &amp;lt;code&amp;gt;TestSchedule&amp;lt;/code&amp;gt; is active&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/STATE&amp;quot;:&amp;quot;on&amp;quot;&amp;lt;/code&amp;gt; = Output 1 is ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ACTION ==&lt;br /&gt;
ACTIONS part in the Rule contains list of several actions when condition(s) + filter(s) are valid. &lt;br /&gt;
&lt;br /&gt;
The actions can change output states (turn OFF, turn ON, toggle, etc.) or trigger an Alarm state in NETIO Cloud. &lt;br /&gt;
There is one Alarm state reserved per each one output in the NETIO Cloud premium (only).&lt;br /&gt;
You can verify your configuration and check sending of the Output Alarm in the Device Log. &lt;br /&gt;
&lt;br /&gt;
=== Available forms of actions ===&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0&amp;lt;/code&amp;gt; = Turn OFF Output 1&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;OUTPUTS/6/ACTION&amp;quot;: 2&amp;lt;/code&amp;gt; = Short OFF Output 6&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt; = Set condition output value to the alarm (Turns the alarm ON or OFF based on condition evaluation)&lt;br /&gt;
&lt;br /&gt;
''Note: The variable &amp;lt;code&amp;gt;${COND_RESULT}&amp;lt;/code&amp;gt; contains output value of the given condition. It takes values 0 (condition not met) or 1 (condition met). It can be used for dynamic switching the alarm in Cloud ON/OFF depending on current state of the PAB.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Standard output actions per each output ===&lt;br /&gt;
* 0 = TURN OFF&lt;br /&gt;
* 1 = TURN ON&lt;br /&gt;
* 2 = SHORT OFF&lt;br /&gt;
* 3 = SHORT ON&lt;br /&gt;
* 4 = TOGGLE - Changes the status from ON to OFF and vice versa&lt;br /&gt;
* 5 = NOTHING (placeholder, DO NOT USE)&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&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;
| conditions&lt;br /&gt;
| Eg: `&amp;quot;PAB/PAB1_1/IN&amp;quot;: true`&lt;br /&gt;
| Conditions definition. Relationship between conditions is defined by &amp;lt;code&amp;gt;operator&amp;lt;/code&amp;gt; (AND/OR)&lt;br /&gt;
|-&lt;br /&gt;
| operator&lt;br /&gt;
| AND/OR&lt;br /&gt;
| Optional. Specifies relationship between conditions. &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt; = all conditions must apply at the same time. &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt; = at least one condition must apply. If missing, defaults to &amp;lt;code&amp;gt;OR&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| filters&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;SCHEDULE/MY_SCHEDULE/ACTIVE&amp;quot;: true&amp;lt;code/&amp;gt;&lt;br /&gt;
| Filter definition. For multiple filter conditions, the relationship between them is always &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| Eg: &amp;lt;code&amp;gt;&amp;quot;CLOUD/OUTPUT/1/ALARM&amp;quot;: &amp;quot;${COND_RESULT}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
| Actions definition. All actions defined here will be triggered when conditions (and filters) are met&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Condition names are based on user-specified names and their types:&lt;br /&gt;
* For PABs, the name has structure: &amp;lt;code&amp;gt;PAB/pab_name/pab_output_value&amp;lt;/code&amp;gt; (TRUE/FALSE or int)&lt;br /&gt;
* For WatchDogs, the name has structure:  &amp;lt;code&amp;gt;WDT/watchdog_name/FAIL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sequence &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;
Sequences bring extended usability to ACTIONS. In addition to basic actions that are triggered right after certain condition (conditions) are met, sequence can be defined to enable repetitive actions.&lt;br /&gt;
&lt;br /&gt;
=== Configuration variables ===&lt;br /&gt;
&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;
| repeat&lt;br /&gt;
| int (0 to 1-MAX_INT) / true&lt;br /&gt;
| How many times should the sequence repeat. Set &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; for indefinitely (can only be turned off by disabling the rule).&lt;br /&gt;
|-&lt;br /&gt;
| actions&lt;br /&gt;
| &lt;br /&gt;
| Standard actions as defined in section [[#ACTION| ACTION]]&lt;br /&gt;
|-&lt;br /&gt;
| delay&lt;br /&gt;
| int [ms] in multiples of 100ms&lt;br /&gt;
| '''May''' be set along with actions to be executed. Defines time the sequence waits '''after''' performing the action. The value is rounded up to hundreds of miliseconds (e.g. 85ms -&amp;gt; 100ms, 235ms -&amp;gt; 300ms).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
This example triggers one-time action along with sequence of other actions and repeats 10-times after meeting certain condition.&lt;br /&gt;
:'''Condition''': WatchDog '''CR01_WDT''' fails (receives timeout from defined address)&lt;br /&gt;
:'''One-time action''': Restart output No. 2 (action 2 = short off/restart)&lt;br /&gt;
:''' Sequence ''': Following steps repeat 10-times&lt;br /&gt;
:# Turn output No. 1 ON  &lt;br /&gt;
:# Wait 10s  &lt;br /&gt;
:# Turn output No. 1 OFF&lt;br /&gt;
:# Wait 2s&lt;br /&gt;
:# Repeat&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;
    &amp;quot;sequence&amp;quot;:{&lt;br /&gt;
      &amp;quot;repeat&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;actions&amp;quot;:[&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 1, &amp;quot;delay&amp;quot;:10000},&lt;br /&gt;
        {&amp;quot;OUTPUTS/1/ACTION&amp;quot;: 0, &amp;quot;delay&amp;quot;:2000}&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1020</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1020"/>
		<updated>2023-06-13T16:57:11Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* DEVICE_MAC */&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;
== 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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1019</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1019"/>
		<updated>2023-06-13T16:56:45Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* UTC_TIME FW 4.0.0+ */&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1018</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1018"/>
		<updated>2023-06-13T16:54:01Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* UTC_TIME */&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;
== 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;
&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;, &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;${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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1017</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1017"/>
		<updated>2023-06-13T16:53:21Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Payload/topic 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;
== 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;
&lt;br /&gt;
=== UTC_TIME ===&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;, &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;${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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1016</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1016"/>
		<updated>2023-06-06T14:31:32Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1015</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1015"/>
		<updated>2023-06-06T14:29:38Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1014</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1014"/>
		<updated>2023-06-06T14:29:16Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1013</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1013"/>
		<updated>2023-06-06T14:23:06Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;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;
  ],&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;OUTPUT/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;${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;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&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;OUTPUT/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;${OUTPUT/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;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1012</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1012"/>
		<updated>2023-06-06T14:20:39Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;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/1/state&amp;quot;&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;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUT/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;${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;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&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;OUTPUT/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;${OUTPUT/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;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1011</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1011"/>
		<updated>2023-06-06T14:20:20Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;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/1/state&amp;quot;&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;events&amp;quot;: [&lt;br /&gt;
       {&lt;br /&gt;
         &amp;quot;source&amp;quot;: &amp;quot;OUTPUT/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;${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;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&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;OUTPUT/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;${OUTPUT/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;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1010</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1010"/>
		<updated>2023-06-06T14:18:50Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Group EventsFW 4.0.0+ */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;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/1/state&amp;quot;&lt;br /&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;events&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;source&amp;quot;: &amp;quot;OUTPUT/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;${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;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&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;OUTPUT/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;${OUTPUT/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;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1009</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1009"/>
		<updated>2023-06-06T14:18:32Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Events */&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 topic publish on the same event.&lt;br /&gt;
&lt;br /&gt;
See the example below.&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;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/1/state&amp;quot;&lt;br /&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;events&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;source&amp;quot;: &amp;quot;OUTPUT/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;${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;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/1/state&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;OUTPUT/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;${OUTPUT/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;quot;topic&amp;quot;: &amp;quot;devices/${DEVICE_NAME}/output/2/state&amp;quot;&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1008</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1008"/>
		<updated>2023-06-06T14:10:56Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule and MQTT publish from MQTT subscribe FW 4.0.0+ */&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1007</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1007"/>
		<updated>2023-06-06T14:10:01Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger MQTT publish by MQTT subscribe FW 4.0.0+ */&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;goad7jbh326pr2ne&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-dev.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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1006</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1006"/>
		<updated>2023-06-06T14:09:44Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule sequence from MQTT FW 4.0.0+ */&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;goad7jbh326pr2ne&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-dev.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;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1005</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1005"/>
		<updated>2023-06-06T14:09:10Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule sequence from MQTT FW 4.0.0+ */&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 sequence from MQTT &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;goad7jbh326pr2ne&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-dev.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;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1004</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1004"/>
		<updated>2023-06-06T14:01:54Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule sequence from MQTT FW 4.0.0+ */&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 sequence from MQTT &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;
&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;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&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;
  }&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;goad7jbh326pr2ne&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-dev.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;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1003</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1003"/>
		<updated>2023-06-06T13:59:46Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule sequence from MQTT FW 4.0.0+ */&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 sequence from MQTT &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;
&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;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&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;
  }&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;goad7jbh326pr2ne&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-dev.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;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;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/TOTAL/ENERGY/&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g//TOTAL/LOAD/&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/3/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/4/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/INPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/INPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/COMMAND&amp;quot;&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/TOTAL/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;topic&amp;quot;:&amp;quot;broker/gv90018g/TOTAL/ENERGY/&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/TOTAL/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;topic&amp;quot;:&amp;quot;broker/gv90018g/TOTAL/LOAD/&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;: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;${OUTPUTS/2/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/2/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/3/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/3/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/4/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/4/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${INPUTS/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/INPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${INPUTS/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/INPUTS/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;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&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;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1002</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1002"/>
		<updated>2023-06-06T13:58:25Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule sequence from MQTT FW 4.0.0+ */&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 sequence from MQTT &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;
====== Rules Configuration: ======&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;conditions&amp;quot;: {&lt;br /&gt;
    &amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;: &amp;quot;getValues&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;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
====== MQTT Configuration: ======&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;goad7jbh326pr2ne&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-dev.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;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;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
          &amp;quot;appliedTopics&amp;quot;:[&lt;br /&gt;
          &amp;quot;broker/gv90018g/TOTAL/ENERGY/&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g//TOTAL/LOAD/&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/2/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/3/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/OUTPUTS/4/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/INPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/INPUTS/1/STATE&amp;quot;,&lt;br /&gt;
          &amp;quot;broker/gv90018g/COMMAND&amp;quot;&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/TOTAL/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;topic&amp;quot;:&amp;quot;broker/gv90018g/TOTAL/ENERGY/&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/TOTAL/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;topic&amp;quot;:&amp;quot;broker/gv90018g/TOTAL/LOAD/&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;: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;${OUTPUTS/2/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/2/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/3/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/3/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${OUTPUTS/4/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/4/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${INPUTS/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/INPUTS/1/STATE&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
      {&lt;br /&gt;
       &amp;quot;payload&amp;quot;:&amp;quot;${INPUTS/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/INPUTS/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;quot;target&amp;quot;:&amp;quot;PROTOCOLS/MQTT/EVENT&amp;quot;,&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;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1001</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1001"/>
		<updated>2023-06-06T13:44:55Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger Rule sequence from MQTT */&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 sequence from MQTT &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;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1000</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=1000"/>
		<updated>2023-06-06T13:44:43Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Trigger MQTT publish by MQTT subscribe */&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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=999</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=999"/>
		<updated>2023-06-06T13:44:27Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* MQTT Subscribe as event to trigger action */&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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by MQTT subscribe ====&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=998</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=998"/>
		<updated>2023-06-06T13:15:11Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* MQTT Event to rules */&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 ===&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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by MQTT subscribe ====&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=997</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=997"/>
		<updated>2023-06-06T12:52:13Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* MQTT Event to rules */&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 Event to rules ===&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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by MQTT subscribe ====&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=996</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=996"/>
		<updated>2023-06-06T12:51:24Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* MQTT Event to rules */&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 Event to rules ===&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;
usage:&amp;lt;code&amp;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;
&amp;lt;/code&amp;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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by MQTT subscribe ====&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=995</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=995"/>
		<updated>2023-06-06T12:50:46Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* MQTT Event to rules */&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 Event to rules ===&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;lt;code&amp;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;
&amp;lt;/code&amp;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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by MQTT subscribe ====&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=994</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=994"/>
		<updated>2023-06-06T12:45:22Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Subscribe */&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 Event to rules ===&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;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;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;
&amp;lt;/code&amp;gt;&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 sequence from MQTT ====&lt;br /&gt;
==== Trigger MQTT publish by MQTT subscribe ====&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=993</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=993"/>
		<updated>2023-06-05T21:35:35Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Commands */&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;
=== 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;
&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;
= Events =&lt;br /&gt;
==== Timer ====&lt;br /&gt;
&lt;br /&gt;
==== Delta ====&lt;br /&gt;
&lt;br /&gt;
==== Change ====&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;
&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=992</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=992"/>
		<updated>2023-06-05T21:34:01Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* Target Source 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;
=== 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;
&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;
= Commands =&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;
== 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;
&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>Bbakala</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=991</id>
		<title>MQTT-flex</title>
		<link rel="alternate" type="text/html" href="https://wiki.netio-products.com/index.php?title=MQTT-flex&amp;diff=991"/>
		<updated>2023-06-05T20:58:31Z</updated>

		<summary type="html">&lt;p&gt;Bbakala: /* PROTOCOLS/MQTT/CONNECTEDFW 4.0.0+ */&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;
=== 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;
&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;
= Commands =&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;
==== PROTOCOLS/MQTT/CONNECTED&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;
Value changes when MQTT is connected or reconnected after connection failure. Useful for system synchronization&lt;br /&gt;
&lt;br /&gt;
Type: bool &lt;br /&gt;
&lt;br /&gt;
Allowed in: &amp;lt;code&amp;gt;&amp;quot;events&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: Creates event when MQTT is connected&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;quot;events&amp;quot;:[&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;source&amp;quot;:&amp;quot;PROTOCOLS/MQTT/CONNECTED&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;:&amp;quot;change&amp;quot;,&lt;br /&gt;
    &amp;quot;value&amp;quot;:true&lt;br /&gt;
}&lt;br /&gt;
]&lt;br /&gt;
&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;
&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>Bbakala</name></author>
		
	</entry>
</feed>