Difference between revisions of "Template:Networking rutos manual input output"

From Teltonika Networks Wiki
(132 intermediate revisions by 19 users not shown)
Line 1: Line 1:
{{Template: Networking_device_manual_fw_disclosure
+
{{Template:Networking_rutos_manual_fw_disclosure
| series = {{{series}}}
+
| fw_version = {{{series}}}_R_00.02.03.1
| name  = {{{name}}}
+
| series     = {{{series}}}
| fw_version ={{Template: Networking_device_manual_latest_fw
 
| series = {{{series}}}
 
| name  = {{{name}}}
 
}}
 
 
}}
 
}}
{{#ifeq: {{{series}}} | RUT9 |<br><i><b>Note</b>: <b>[[{{{name}}} Input/Output (legacy WebUI)|click here]]</b> for the old style WebUI (FW version {{Template: Networking_device_manual_latest_fw | series = RUT9XX}} and earlier) user manual page.</i>
 
  
<p style="color:red">Warning: From 7.0 version I/O parameters and controls have changed compared to {{Template: Networking_device_manual_latest_fw | series = RUT9XX}} and earlier legacy versions.</p>|}}
+
__TOC__
{{#ifeq: {{{series}}} | RUT2 |<br><i><b>Note</b>: <b>[[{{{name}}} Input/Output (legacy WebUI)|click here]]</b> for the old style WebUI (FW version {{Template: Networking_device_manual_latest_fw | series = RUT2XX}} and earlier) user manual page.</i>
 
  
<p style="color:red">Warning: From 7.1 version I/O parameters and controls have changed compared to {{Template: Networking_device_manual_latest_fw | series = RUT2XX}} and earlier legacy versions.</p>|}}
 
 
==Summary==
 
==Summary==
  
<b>Inputs</b> and <b>outputs</b> are used for monitoring and controlling a connected device or receiving signals from that device in order to trigger certain events.
+
<b>Inputs</b> and <b>outputs</b> are used for monitoring and controlling a connected device or receiving signals from that device in order to trigger certain events. This chapter is an overview of the Input/Output section for {{{name}}} devices.
 
 
This chapter of the user manual provides an overview of the Input/Output section for {{{name}}} devices.
 
  
 
{{Template:Networking_rutos_manual_basic_advanced_webui_disclaimer
 
{{Template:Networking_rutos_manual_basic_advanced_webui_disclaimer
Line 23: Line 14:
 
}}
 
}}
  
==Physical characteristics and I/O pin mapping==
+
{{#switch:{{{series}}}
 +
| RUTX =
 +
==Characteristics==
  
Electrical characteristics and I/O pin mapping information are presented below.
+
The router's input/output pins can be found inside the power socket:
  
{{Template:Networking_rutos_manual_input_output_pinout
+
[[File:Networking_rutx_manual_input_output_status_pinout_v1.png]]
| series        = {{{series}}}
 
| configurableio = {{{configurableio}}}
 
| input_volts    = {{{input_volts}}}
 
}}{{#switch: {{{name}}}
 
| TRB141 =<h3>Input/Output Connector Pinout</h3>
 
 
----
 
----
[[File:Networking_trb141_manual_input_output_input_output_connector_pinout_v2.png]]
+
The electric characteristics for the input and output pins are as follows:
  
 
<ul>
 
<ul>
     <li><b>DI<sub>1</sub></b> & <b>DI<sub>2</sub></b> - DRY/WET configurable inputs:
+
     <li>Digital non-isolated input:
 
         <ul>
 
         <ul>
             <li><b>WET</b>: 0-1.9 V is detected as logical "0"; 1.9-3.8 V is detected as logical "1"</li>
+
             <li>logic low: 0 - 5 V</li>
             <li><b>DRY</b>: is detected as logical "0"  when the input is shorted to GND; otherwise is detected as logical "1"</li>
+
             <li>logic high: 8 - 40 V</li>
 
         </ul>
 
         </ul>
 
     </li>
 
     </li>
     <li><b>NC<sub>1</sub></b>, <b>C<sub>1</sub></b> & <b>NO<sub>1</sub></b> - Normally Closed, Common and Normally Open contacts of the internal Non-Latching Relay respectively.<br>Maximum relay ratings: 0.5 A at 60 VDC/70 VAC, 1 A at 30 VDC/VAC.</li>
+
     <li>Digital open collector output: 30 V, 300 mA</li>
    <li><b>NC<sub>2</sub></b>, <b>C<sub>2</sub></b> & <b>NO<sub>2</sub></b> - Normally Closed, Common and Normally Open contacts of the internal Latching Relay respectively.<br>Maximum relay ratings: 0.8 A at 70 VDC, 0.9 A at 70 VAC, 2 A at 30 VDC/VAC.</li>
 
    <li><b>A</b> - ADC input. Analog voltage range: 0-30 V. The input can be configured for 4-20 mA sensor protocol as current measurement (ACL) of 0-30 mA.</li>
 
    <li><b>l</b> and <b>⏚</b> - isolated input contacts.
 
        <ul>
 
            <li>0-7.3 V is detected as logical "0"</li>
 
            <li>7.3-71 V is detected as logical "1"</li>
 
        </ul>
 
    </li>
 
    <li><b>+</b> - a power output connected directly to gateway's power supply input pin. This Output can be used to power an external 4-20 mA current sensor.</li>
 
    <li><b>3.8</b> is a 3.8 V power output that can be used to power 1-Wire sensors.</li>
 
    <li><b>1W</b> - 1-Wire protocol input/output.</li>
 
    <li><b>⏚</b> - GND contact.</li>
 
    <li><b>''Note:''</b> input circuit components have tolerance of +-1%.</li>
 
 
</ul>
 
</ul>
| RUT955|RUT956|RUT906 =<h3>Input/Output Connector Pinout</h3>
+
| TRB14X =
 +
{{#ifeq:{{{name}}}|TRB141
 +
|
 +
==Characteristics==
 +
 
 +
TRB141 has eighteen input/output pins, two of them can be found inside the power socket and the rest sixteen are on the side of the device. A list of Input/Output electric characteristics inherent in TRB141 devices can be found bellow.
 +
 
 +
===Power Socket Pins===
 +
----[[File:Networking_trb141_manual_I-O_power_v1.png|border|class=tlt-border|353x353px]]<br />
 +
 
 +
*'''Power''' pin: +9 ... +30 VDC positive power input.
 +
*'''Ground''' pin: negative/ground connection from power supply.
 +
*'''I/0''' pins: programmable Input/Output pins (Open Collector output, max  30V or Digital input where 0-7.3 V is detected as logical "0", 7.3-30 V is  detected as logical "1").
 +
 
 +
===Connector Pins===
 +
----
 +
[[File:Networking_trb141_manual_I-O_socket_v1.png|345x345px|border|class=tlt-border]]
 +
 
 +
*'''DI1''' and '''DI2''' are DRY/WET configurable inputs. WET: 0-1.9 V is detected as logical "0", 1.9-3.8 V is detected as logical "1".  DRY: Logical "0" is detected when input is shorted to GND, otherwise  input is detected as logical "1".
 +
*'''NC<sub>1</sub>  C<sub>1</sub>''' and '''NO<sub>1</sub>''' are respectively Normally Closed, Common and Normally Open contacts of internal Non-Latching Relay. Maximum relay ratings: 0.5A at 60 VDC/70 VAC, 1A at 30 VDC/VAC.
 +
*'''NC<sub>2</sub> C<sub>2</sub>''' and '''NO<sub>2</sub>''' are respectively Normally Closed, Common and Normally Open contacts of internal Latching Relay. Maximum relay ratings: 0.8A at 70 VDC, 0.9A at 70 VAC, 2A at 30 VDC/VAC.
 +
*'''A''' is ADC input. Analog voltage range 0 - 30 V. Input can be configured for 4-20mA sensor protocol as current measurement of 0 - 30 mA.
 +
*'''l''' and '''⏚''' are isolated input contacts. 0-7.3 V is detected as logical "0",  7.3-71 V is detected as logical "1".
 +
*'''+''' is power output connected directly to gateway's power supply input pin.  This Output can be used for powering external 4-20 mA current sensor.
 +
*'''3.8''' is 3.8V power output which can be used to power 1-Wire sensors when needed.
 +
*'''1W''' 1-Wire protocol input/output.
 +
*'''⏚''' is GND contact.
 +
}}
 +
| TRB2XX =
 +
 
 +
|
 +
}}
 +
 
 +
==Status==
 +
 
 +
{{#switch:{{{series}}}
 +
| TRB2XX =
 +
The <b>Status</b> page displays the current states of the device configurable inputs and outputs:
 +
 
 +
[[File:Networking_trb2_manual_input_output_status_v1.png|border|class=tlt-border]]
 +
 
 +
You can invert Input pins by clicking on clider in <b>Inversion</b> column and switch Outputs pin state by clicking on slider in <b>State</b> column.
 +
 
 +
===Status from command line===
 
----
 
----
[[File:Networking_rut955_manual_input_output_input_output_connector_pinout_v3.png]]
+
You can also obtain the status of the input or output from the command line. List of ubus possible <b>values</b> in {{{name}}} devices:
 +
 
 +
ioman.adc.adc0
 +
ioman.gpio.dio0
 +
ioman.gpio.dio1
 +
ioman.gpio.dio2
 +
 
 +
Call command <b>ubus call <u>value</u> status </b>:
 +
root@Teltonika-{{{name}}}:~# ubus call ioman.gpio.dio0 status
 +
{
 +
        "value": "0",
 +
        "direction": "out",
 +
        "bi_dir": true,
 +
        "invert_input": false
 +
}
  
 
<ul>
 
<ul>
     <li><b>DI</b><sub>1</sub> and <b>⏚</b><sub>1</sub> - Digital input (dry type):</li>
+
     <li><b>dio0</b> is configurable input / output:
 
         <ul>
 
         <ul>
             <li>0-1.2 V is detected as logical "1"</li>
+
             <li>"value": "<b>0</b>" means low level state.</li>
             <li>1.8-3 V is detected as logical "0"</li>
+
             <li>"value": "<b>1</b>" means high level state.</li>
 
         </ul>
 
         </ul>
     <li><b>DI</b><sub>2</sub>  and <b>⏚</b><sub>2</sub> - Digital galvanically isolated input:</li>
+
     </li>
 +
    <li><b>adc0</b> is analog input:
 
         <ul>
 
         <ul>
             <li>0-4 V is detected as logical "0"</li>
+
             <li>"value": "<b>0.54</b>" means 0.54V.</li>
            <li>9-30 V is detected as logical "1"</li>
 
 
         </ul>
 
         </ul>
     <li><b>DO</b> and <b>⏚</b><sub>3</sub> - Galvanically isolated open collector (OC) output: 30 V, 250 mA.</li> 
+
     </li>
    <li><b>+V</b> and <b>⏚</b><sub>3</sub> - External VCC for <b>DO</b> (<30 V).</li> 
 
    <li><b>C & NO</b> - Common and Normally Open contacts of the internal Non-Latching Relay respectively.<br>Maximum relay ratings: 4 A at 24 VDC, 4 A at 40 VAC.</li>
 
    <li><b>A</b> and <b>⏚</b><sub>1</sub> - ADC input. Analog voltage range: 0-24 V. The input can be configured for 4-20 mA sensor protocol as current measurement (ACL).<span class="asterisk">*</span></li>
 
    <li><b>⏚</b><sub>1</sub> - GND for <b>DI</b><sub>1</sub> and <b>A</b>.</li>
 
    <li><b>⏚</b><sub>2</sub> - GND for <b>DI</b><sub>2</sub>.
 
    <li><b>⏚</b><sub>3</sub> - GND for <b>DO</b> pins.
 
    <li><b>''Note:''</b> input circuit components have tolerance of +-1%.</li>
 
 
</ul>
 
</ul>
 +
| TRB14X =
 +
{{#ifeq:{{{name}}}|TRB141
 +
|
 +
The <b>Status</b> page displays the current states of the device configurable inputs and outputs:
 +
 +
[[File:Networking_trb1_manual_input_output_status_v1.png|border|class=tlt-border]]
 +
 +
You can invert Input pins by clicking on slider in <b>Inversion</b> column and switch Outputs pin state by clicking on slider in <b>State</b> column.
 +
 +
===Status from command line===
 +
----
 +
You can also obtain the status of the input or output from the command line. List of ubus possible <b>values</b> in {{{name}}} devices:
 +
 +
ioman.acl.acl0
 +
ioman.adc.adc0
 +
ioman.dwi.dwi0
 +
ioman.dwi.dwi1
 +
ioman.gpio.dio0
 +
ioman.gpio.dio1
 +
ioman.gpio.iio
 +
ioman.gpio.onewire
 +
ioman.relay.relay0
 +
ioman.relay.relay1
 +
 +
In order to read value use '''''status''''' command.
 +
 +
ubus call ioman.gpio.dio0 status
 +
ubus call ioman.relay.relay0 status
 +
 +
To change input settings use '''''update''''' command and write the value.
 +
 +
ubus call ioman.gpio.dio0 update '{"value":"0"}'
 +
ubus call ioman.gpio.dio0 update '{"value":"1"}'
 +
 +
To change relay settings use '''''update''''' command and write state.
 +
 +
ubus call ioman.relay.relay0 update '{"state":"open"}'
 +
ubus call ioman.relay.relay0 update '{"state":"closed"}'
 +
 +
===Reading I/O values from directory===
 
----
 
----
<span class="asterisk">*</span> The deviation from the actual input voltage and the voltage measured by the device is dependent on the input voltage value:
 
  
<ul>
+
You can also collect I/O values straight from directories in your device.
    <li>'''≥ 1.5 V''' - the deviation is about ± 10 % and gets lower when the input voltage increases towards 5 V</li>
+
 
    <li>'''≥ 5 V''' - the deviation does not exceed ± 3 %</li>
+
====Digital inputs, Relay outputs====
    <li>'''≥ 9 V''' - the deviation does not exceed ± 2 %</li>
+
----
</ul>
+
 
 +
Following is a list of I/O directories in '''''/sys/class/gpio/''''':
 +
 
 +
dwi1(dry wet) input 14; toggle 12 (to read value refer to gpio14, to change state dry/wet refer to gpio12)
 +
dwi2(dry wet) input 15; toggle 38 (to read value refer to gpio15, to change state dry/wet refer to gpio38)
 +
relay open 20; closed 22; (turn off gpio20 set to 0, turn on gpio22 set value to 1; and visa versa)
 +
latching relay open 23; close 21 (turn off gpio23 set to 0, turn on gpio21 set value to 1; and visa versa)
 +
dio0 (power socket) input 13; output 16 (direction can be changed, to read input use gpio13, to control output use gpio16)
 +
dio1 (power socket) input 17; output 78 (direction can be changed, to read input use gpio17, to control output use gpio78)
 +
iio (isolated input) input 1021 (to read value refer to gpio1021)
 +
 
 +
In order to read digital input value use '''''cat''''' command.
 +
 
 +
cat /sys/class/gpio/gpio14/value
 +
cat /sys/class/gpio/gpio15/value
 +
cat /sys/class/gpio/gpio1021/value
 +
 
 +
To change input state use '''''echo''''' command where "1" is "dry" state and "0" is "wet" state.
 +
 
 +
echo 0 > /sys/class/gpio/gpio12/value
 +
echo 1 > /sys/class/gpio/gpio38/value
 +
 
 +
When one Relay output is open, other one is closed, so turning on/off the output you will have to change value on both pins. For that '''''echo''''' command is used. Same principle applies to Latching Relay output.
  
<b>Additional note</b>: the deviation values specified above are applicable in temperatures of < 50 °C. Under higher temperatures the deviation values become considerably higher.
+
echo 1 > /sys/class/gpio/gpio20/value & echo 0 > /sys/class/gpio/gpio22/value
}}
+
echo 1 > /sys/class/gpio/gpio23/value & echo 0 > /sys/class/gpio/gpio21/value
  
==Status==
+
====ADC (Analog Input)====
 +
----
  
The <b>Status</b> page displays the current states of the device's input and output pins:
+
ADC (Analog input) can be read from different directory, '''''/sys/devices/qpnp-vadc-8/mpp4_vadc''''' also using '''''cat''''' command, but received Result value has to be divided by 126582 to get number in volts.
  
{{#switch: {{{name}}}
+
cat /sys/devices/qpnp-vadc-8/mpp4_vadc
| TRB141 = [[File:Networking_trb141_manual_input_output_status_v4.png|border|class=tlt-border]]
+
| <!--     for other TRB1    -->
| RUT955|RUT956|RUT906 = [[File:Networking_RUT955_manual_input_output_status_v4.png|border|class=tlt-border]]
+
The <b>Status</b> page displays the current states of the device input and output:
| TRB245|TRB246|TRB255|TRB256 = [[File:Networking_trb2_manual_input_output_status_v3.png|border|class=tlt-border]]
 
| [[File:Networking_{{lc:{{{series}}}}}_manual_input_output_status.png|border|class=tlt-border]]
 
}}
 
  
You can invert an Input pin by clicking the on/off slider under the "Inversion" column or switch the state of an Output pin by clicking the on/off slider under the "State" column.
+
[[File:Networking_rutx_manual_input_output_status_v2.png|border|class=tlt-border]]
  
User can <b> Rename </b> Input/Output interface by clicking on the "Edit" button.
+
You can invert Input pin by clicking on clider in <b>Inversion</b> column and switch Output pin state by clicking on slider in <b>State</b> column.
  
{{#switch: {{{name}}}
+
===Status from command line===
| TRB141 = '''Note:''' When dry/wet input is not connected to anything - the state of level is undetermined.
+
----
| #default =}}
+
You can also obtain the status of the input or output from the command line. List of ubus possible <b>values</b> in {{{name}}} devices:
{{#switch: {{{name}}}  
 
| RUT955|RUT956|RUT906|TRB245|TRB246|TRB255|TRB141|TRB256 = 
 
'''Note:''' You can edit the adc/acl formula to customize values.
 
  
Custom I/O status labels for "Analog input":
+
ioman.gpio.din1
[[File:Networking_manual_input_output_status_formula_adc0.png|border|class=tlt-border]]
+
ioman.gpio.dout1
  
Custom I/O status labels for "Analog current loop":
+
Call command <b>ubus call <u>value</u> status </b>:
[[File:Networking_manual_input_output_status_formula_acl0.png|border|class=tlt-border]]
+
root@Teltonika-{{{name}}}:~# ubus call ioman.gpio.dout1 status
| #default =
+
{
 +
        "value": "0",
 +
        "direction": "in",
 +
        "bi_dir": false,
 +
        "invert_input": false
 +
}
 +
 
 +
<ul>
 +
    <li><b>din1</b> is the input:
 +
        <ul>
 +
            <li>"value": "<b>0</b>" means low level state.</li>
 +
            <li>"value": "<b>1</b>" means high level state.</li>
 +
        </ul>
 +
    </li>
 +
    <li><b>dout1</b> is the output:
 +
        <ul>
 +
            <li>"value": "<b>0</b>" means low level state.</li>
 +
            <li>"value": "<b>1</b>" means high level state.</li>
 +
        </ul>
 +
    </li>
 +
</ul>
 
}}
 
}}
 +
| <!--    for rutx      -->
 +
The <b>Status</b> page displays the current states of the device input and output:
 +
 +
[[File:Networking_rutx_manual_input_output_status_v2.png|border|class=tlt-border]]
 +
 +
You can invert Input pin by clicking on clider in <b>Inversion</b> column and switch Output pin state by clicking on slider in <b>State</b> column.
  
 
===Status from command line===
 
===Status from command line===
 
----
 
----
You can also obtain the status of input and output pins via the command line (CLI or SSH). List of possible ubus values in {{{name}}} devices:
+
You can also obtain the status of the input or output from the command line. List of ubus possible <b>values</b> in {{{name}}} devices:
  
{{#switch: {{{series}}}
+
ioman.gpio.din1
| TRB1 ={{#ifeq:{{{name}}}
+
ioman.gpio.dout1
  | TRB141 | {{Template:Networking_trb141_manual_input_output_status}}
+
 
  | {{Template:Networking_{{lc:{{{series}}}}}_manual_input_output_status|name={{{name}}}}}
+
Call command <b>ubus call <u>value</u> status </b>:
  }}
+
root@Teltonika-{{{name}}}:~# ubus call ioman.gpio.dout1 status
| #default = {{Template:Networking_{{lc:{{{series}}}}}_manual_input_output_status|name={{{name}}}}}
+
{
}}
+
        "value": "0",
 +
        "direction": "in",
 +
        "bi_dir": false,
 +
        "invert_input": false
 +
}
  
{{#switch: {{{name}}}
+
<ul>
| RUT300|RUT301|RUT360|TRB245|TRB246|TRB255|TRB140|TRB141|TRB142|TRB143|TRB145|TRB256 = '''Note:''' Changes of configurable pin type  from output to input (and reverse) could causes the issues where the specific type was set in configurations. Make sure that configurations do not contradict one another.
+
    <li><b>din1</b> is the input:
| #default =
+
        <ul>
 +
            <li>"value": "<b>0</b>" means low level state.</li>
 +
            <li>"value": "<b>1</b>" means high level state.</li>
 +
        </ul>
 +
    </li>
 +
    <li><b>dout1</b> is the output:
 +
        <ul>
 +
            <li>"value": "<b>0</b>" means low level state.</li>
 +
            <li>"value": "<b>1</b>" means high level state.</li>
 +
        </ul>
 +
    </li>
 +
</ul>
 
}}
 
}}
  
 
==Post/Get==
 
==Post/Get==
  
Enabling <b>Post/Get</b> provides the possibility to control the state of an output via HTTP POST/GET requests. The figure below is an example of the Auth Settings section of the Post/Get page. It is used to turn Post/Get requests on or off and to set authentication parameters.
+
Enabling <b>Post/Get</b> will allow you to send HTTP POST/GET requests to device which controls the state of the output. The figure below is an example of the Post/Get configuration section and the table below provides information on the fields contained in that section:
  
[[File:Networking_rutos_manual_input_output_post_get_auth_settings_v3.png|border|class=tlt-border]]
+
[[File:Networking_rutx_manual_input_output_post_get_v1.png|border|class=tlt-border]]
  
 
<table class="nd-mantable">
 
<table class="nd-mantable">
Line 155: Line 277:
 
     <tr>
 
     <tr>
 
       <td>Enable</td>
 
       <td>Enable</td>
       <td>off {{!}} on; default: <b>off</b></td>
+
       <td>off | on; default: <b>off</b></td>
 
       <td>Turns Post/Get on or off.</td>
 
       <td>Turns Post/Get on or off.</td>
    </tr>
 
    <tr>
 
      <td>Access</td>
 
      <td>io_state {{!}} io_type {{!}} io_value {{!}} io_invert; default: <b>io_state, io_type, io_value, io_invert</b></td>
 
      <td>Accessible methods. It is considered that all methods are allowed if this list is empty.</td>
 
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 172: Line 289:
 
         <td>string; default: <b>none</b></td>
 
         <td>string; default: <b>none</b></td>
 
         <td>Password used for authentication in POST/GET queries.</td>
 
         <td>Password used for authentication in POST/GET queries.</td>
    </tr>
 
    <tr>
 
    <td>Confirm password</td>
 
        <td>string; default: <b>none</b></td>
 
        <td>Repeat the password for confirmation.</td>
 
 
     </tr>
 
     </tr>
 
</table>
 
</table>
 
<b>Note:</b> password fields are required to enable POST/GET funcionallity.
 
  
 
===Post/Get examples===
 
===Post/Get examples===
 
----
 
----
Use a web browser or any other compatible software to send HTTP POST/GET requests to the device.
+
It is possible to turn the output on and off by using a valid HTTP POST/GET syntax. Use a web browser or any other compatible software to submit HTTP POST/GET strings to the device.
  
====Setting====
+
Below is a table containing syntax examples of this usage:  
----
 
Changing states of various I/O is possible using requests. Below is a table containing syntax examples of this usage:  
 
  
 
<table class="nd-othertables_2">
 
<table class="nd-othertables_2">
Line 195: Line 303:
 
       <th style="width: 900px">POST/GET URL</th>
 
       <th style="width: 900px">POST/GET URL</th>
 
     </tr>
 
     </tr>
 
+
{{#ifeq:{{{configurableio}}}|1|
 
     <tr>
 
     <tr>
 
       <td>Turn Output state to high</td> <!--  another ifeq to change ip subnet according to trb14x...  -->
 
       <td>Turn Output state to high</td> <!--  another ifeq to change ip subnet according to trb14x...  -->
       <td><nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_state</b></span><nowiki>?username=user1&password=user1&pin=</nowiki>{{#ifeq:{{{series}}}|RUTX|dout1|<dio0/dio1{{#switch:{{{series}}}|TRB2|TRB2M=/dio2}}>}}<span style="color: #0054a6;"><b><nowiki>&state=on</nowiki></b></span></td>
+
       <td><nowiki>http://192.168.</nowiki>{{#ifeq:{{{series}}}|TRB14X|2|1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_state</b></span><nowiki>?username=user1&password=user1&pin=dout1</nowiki><span style="color: #0054a6;"><b><nowiki>&state=on</nowiki></b></span></td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
       <td>Turn Output state to low after 5 seconds for 3 seconds</td>
 
       <td>Turn Output state to low after 5 seconds for 3 seconds</td>
       <td><nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_state</b></span><nowiki>?username=user1&password=user1&pin=</nowiki>{{#ifeq:{{{series}}}|RUTX|dout1|<dio0/dio1{{#switch:{{{series}}}|TRB2|TRB2M=/dio2}}>}}&state=on<span style="color: #0054a6;"><b><nowiki>&delay=5</nowiki></b></span><span style="color: #3232ff;"><b><nowiki>&time=3</nowiki></b></span></td>
+
       <td><nowiki>http://192.168.</nowiki>{{#ifeq:{{{series}}}|TRB14X|2|1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_state</b></span><nowiki>?username=user1&password=user1&pin=dout1&state=on</nowiki><span style="color: #0054a6;"><b><nowiki>&delay=5</nowiki></b></span><span style="color: #3232ff;"><b><nowiki>&time=3</nowiki></b></span></td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Check t_time parameter - time is set in miliseconds</td>
+
         <td>Change Configurable Input/Output with pin3 to Output</td>
         <td><nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_state</b></span><nowiki>?username=user1&password=user1&pin=</nowiki>{{#ifeq:{{{series}}}|RUTX|dout1|<dio0/dio1{{#switch:{{{series}}}|TRB2|TRB2M=/dio2}}>}}&state=on<span style="color: #0054a6;"><b><nowiki>&t_time=msec</nowiki></b></span><span style="color: #3232ff;"><b><nowiki>&time=5000</nowiki></b></span><span style="color: #3232ff;"><b><nowiki>&time=1000</nowiki></b></span></td>
+
         <td><nowiki>http://192.168.</nowiki>{{#ifeq:{{{series}}}|TRB14X|2|1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_type</b></span><nowiki>?username=user1&password=user1&</nowiki><span style="color: #0054a6;"><b>pin=dio1</b></span><span style="color: #3232ff;"><b><nowiki>&type=out</nowiki></b></span></td>
 
     </tr>
 
     </tr>
 +
|
 
     <tr>
 
     <tr>
        <td>Invert input</td>
+
      <td>Turn Output state to high</td>
        <td><nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}.1/cgi-bin/io_invert?username=user1&password=user1&pin={{#ifeq:{{{series}}}|RUTX|din1|<dio0/dio1{{#switch:{{{series}}}|TRB2|TRB2M=/dio2}}>}}<span style="color: #0054a6;"><b><nowiki>&invert=<0/1> (0 - disable inversion/1 - enable inversion</nowiki></b></span></td>
+
      <td><nowiki>http://192.168.1.1/cgi-bin/io_state?username=user1&password=user1&pin=dout1</nowiki><span style="color: #0054a6;"><b><nowiki>&state=on</nowiki></b></span></td>
 
     </tr>
 
     </tr>
{{#ifeq:{{{configurableio}}}|1|
 
 
     <tr>
 
     <tr>
        <td>Change Configurable Input/Output with pin3 to Output</td>
+
      <td>Turn Output state to low after 5 seconds for 3 seconds</td>
        <td><nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}.1/cgi-bin/<span style="color: #0054a6;"><b>io_type</b></span><nowiki>?username=user1&password=user1&</nowiki><span style="color: #0054a6;"><b>pin=dio0</b></span><span style="color: #3232ff;"><b><nowiki>&type=out</nowiki></b></span></td>
+
      <td><nowiki>http://192.168.1.1/cgi-bin/io_state?username=user1&password=user1&pin=dout1&state=on</nowiki><span style="color: #0054a6;"><b><nowiki>&delay=5</nowiki></b></span><span style="color: #3232ff;"><b><nowiki>&time=3</nowiki></b></span></td>
 
     </tr>
 
     </tr>
||}}
+
}}
 
+
   
 
</table>
 
</table>
  
 
<b>Overview</b>:
 
<b>Overview</b>:
 
<ul>
 
<ul>
     <li>192.168.{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}.1 - device default LAN IP address; replace it in accordance with your own configuration.</li>
+
     <li>192.168.{{#ifeq:{{{series}}}|TRB14X|2|1}}.1 - device default LAN IP address; replace it in accordance with your own configuration.</li>
{{#ifeq:{{{configurableio}}}|1|<li>io_state,io_type or io_invert- allows you to change IO state, type or invert cofigurable input.</li>}}
+
{{#ifeq:{{{configurableio}}}|1|<li>io_state or io_type - allows you to change IO state or type.</li>}}
 
     <li>username - login name from Post/Get configuration.</li>
 
     <li>username - login name from Post/Get configuration.</li>
 
     <li>password- password from Post/Get configuration.</li>
 
     <li>password- password from Post/Get configuration.</li>
 
     <li>state - turn Output on or off.</li>
 
     <li>state - turn Output on or off.</li>
 
{{#ifeq:{{{configurableio}}}|1|<li>type - turn Configurable Input/Output to Input or Output.</li>}}
 
{{#ifeq:{{{configurableio}}}|1|<li>type - turn Configurable Input/Output to Input or Output.</li>}}
    <li>invert - enables inversion on/off (only works with inputs).</li>
 
 
     <li>delay - defines a delay (in seconds) after which the specified action will be performed.</li>
 
     <li>delay - defines a delay (in seconds) after which the specified action will be performed.</li>
 
     <li>time - defines a window of time during which the action will take place. For instance, if you post an <i>on</i> action while specifying <i>time=5</i>, the output will turn on and stay on for 5 seconds before turning off.</li>
 
     <li>time - defines a window of time during which the action will take place. For instance, if you post an <i>on</i> action while specifying <i>time=5</i>, the output will turn on and stay on for 5 seconds before turning off.</li>
 
</ul>
 
</ul>
  
Delay and time parameters can be used together. For example, if delay is 10, time is 5, action is on, then 10 seconds after the execution of the command, the output will switch to <i>on</i> (or stay in <i>on</i> state if it was already that way), then after 5 more seconds it will switch to <i>off</i> state. In this case the overall command execution time is 15 seconds.
+
Delay and time parameters can be used together.  
----
+
For example, if delay is 10, time is 5, action is on, then 10 seconds after the execution of the command,  
To use Post/Get via SSH instead of a browser, you may want to use the <b><i>curl -X</i></b> command. Simply add the same URL command in between quotes and specify the HTTP method.
+
the output will switch to <i>on</i> (or stay in <i>on</i> state if it was already that way),  
 +
then after 5 more seconds it will switch to <i>off</i> state. In this case the overall command execution time is 15 seconds.
  
<b>Examples:</b>
+
==Scheduler==
  
* <b>Switch output to High:</b>
+
With the help of the output <b>Scheduler</b> you can configure a timetable of when the output should be enabled or disabled based on date and time.
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_state?username=user1&password=user1&pin=dout1&state=on</nowiki>"
+
By default everything is unset.
* <b>Switch output to Low after delay:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_state?username=user1&password=user1&pin=dout1&state=off&delay=5</nowiki>"
 
  
====Reading====
+
{{#ifeq:{{{configurableio}}}|1|[[File:Networking_trb2_manual_input_output_output_scheduler_v1.png|border|class=tlt-border]]|[[File:Networking_rutx_manual_input_output_output_scheduler_v2.png|border|class=tlt-border]]}}
----
 
Getting the current state of various I/O is possible using requests. Usage is very similar to the examples above:
 
  
<b>Examples:</b>
+
==Io juggler==
  
{{#ifeq:{{{configurableio}}}|1|* {{#switch:{{{name}}}|TRB245|TRB246|TRB255|TRB256 = <b>Read state of Configurable Input/Output PIN2/PIN3/PIN4:</b>
+
The <b>Io juggler</b> page is used create automated actions based on Input state and conditions.
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dio0</nowiki>"
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dio1</nowiki>"
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dio2</nowiki>" | #default = <b>Read state of Configurable Input/Output PIN3/PIN4:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dio0</nowiki>"
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dio1</nowiki>"}}|
 
* <b>Read state of digital input/output:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=din1</nowiki>"
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dout1</nowiki>"}}
 
{{#ifeq:{{{analog}}}|1|* <b>Read state of analog input (in voltage mode):</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=adc0</nowiki>"|}}
 
{{#ifeq:{{{acl}}}|1|* <b>Read state of analog input (in current mode):</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=acl0</nowiki>"|}}
 
{{#ifeq:{{{dry}}}|1|* <b>Read state of Dry input PIN1:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dwi0</nowiki>"|}}
 
{{#ifeq:{{{wet}}}|1|* <b>Read state of Wet input PIN2:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dwi1</nowiki>"|}}
 
{{#ifeq:{{{isolated}}}|1|* <b>Read state of Isolated input:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=iio</nowiki>"|}}
 
{{#ifeq:{{{onewire}}}|1|* <b>Read state of One Wire:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=onewire</nowiki>"|}}
 
{{#ifeq:{{{relay}}}|1|* <b>Read state of Relay:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=relay0</nowiki>"|}}
 
{{#ifeq:{{{latchingrelay}}}|1|* <b>Read state of Latching Relay:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=relay1</nowiki>"|}}
 
{{#ifeq:{{{galvanic}}}|1|* <b>Read state of Galvanically isolated open collector output:</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=dout2</nowiki>"|}}
 
{{#ifeq:{{{digitalpassive}}}|1|* <b>Read state of Digital input (only for passive sensors):</b>
 
curl -X GET "<nowiki>http://192.168.</nowiki>{{#switch:{{{series}}}|TRB1|TRB5=2|#default=1}}<nowiki>.1/cgi-bin/io_value?username=user1&password=user1&pin=din2</nowiki>"|}}
 
  
==Scheduler==
+
===General===
 +
----
  
The output <b>Scheduler</b> can be used to configure a timetable of when an output should be turned on or off, based on days of the week or month and hours of the day. The General Configuration section is used to turn the Output Scheduler on or off.
+
The <b>General</b> section allows you to create automated Actions based on selected Inputs and their trigger state.  
 +
The figure below is an example of Conditions section.
  
[[File:Networking_rutos_manual_input_output_scheduler_general_configuration.png|border|class=tlt-border]]
+
{{#switch:{{{series}}}
 +
| TRB14X = [[File:Networking_trb1_manual_input_output_iojuggler_general_v1.png]]
 +
| TRB2XX = [[File:Networking_trb2_manual_input_output_iojuggler_general_v1.png]]
 +
|[[File:Networking_rutx_manual_input_output_iojuggler_general_v1.png]]}}
  
The Scheduler is configured in the form of <b>Instances</b>. A Scheduler Instance defines a time interval during which the state of an output associated with the instance will be set to "High". The Output Scheduler Instances list is empty by default. Click the 'Add' button in order to create a new Scheduler Instance:
 
  
[[File:Networking_rutos_manual_input_output_scheduler_add_button.png|border|class=tlt-border]]
+
====Modify Input configuration====
 +
----
  
After this you should be redirected to the configuration page for the newly added Instance which should look similar to this:
+
You can find explanation about fields in the table below this illustration.
  
[[File:Networking_rutos_manual_input_output_scheduler_instance_configuration_configurableio_{{{configurableio}}}.png|border|class=tlt-border]]
+
[[File:Networking_rutx_manual_input_output_iojuggler_general_modify_v1.png]]
  
 
<table class="nd-mantable">
 
<table class="nd-mantable">
Line 302: Line 383:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
      <td>Enable</td>
+
        <td>Enabled</td>
      <td>off | on; default: <b>off</b></td>
+
        <td>off {{!}} on; default: <b>off</b> </td>
      <td>Turns the Scheduler Instance on or off.</td>
+
        <td>Changes current profile to specified one when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
      <td>Pin</td>
+
        <td>Trigger interval</td>
      <td>output pin; default: <b>{{#ifeq:{{{configurableio}}}|1|Configurable Input/Output (2)|Output (4)}}</b></td>
+
        <td>positive integer; default: <b>none</b></td>
      <td>Output pin. The state of the selected output will be set to "High" during the time interval defined in the fields below.</td>
+
        <td>Specifies what is the shortest amount of seconds between triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
      <td>Interval Type</td>
+
        <td>Trigger</td>
      <td>Weekdays | <span style="color: red;">Month Days</span>; default: <b>Weekdays</b></td>
+
        <td>Rising {{!}} Falling {{!}} Both; default: <b>Rising</b> </td>
      <td>Selects the interval type for scheduler to use.</td>
+
        <td>Specifies on which trigger state this rule will be activated.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
      <td>Start Day</td>
+
        <td>Add actions</td>
      <td>[Monday..Sunday] | [1..31]; default: <b>Monday | 1</b></td>
+
        <td>actions; default: <b>none</b> </td>
      <td>The day that marks the start of the time interval.</td>
+
        <td>Specifies actions which have to be met for rule to be executed. Actions are optional.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
      <td>Start Time</td>
+
        <td>Add conditions</td>
      <td>hh:mm ([00..23]:[00..59]); default: <b>12:00</b></td>
+
        <td>conditions; default: <b>none</b> </td>
      <td>The hour and minute that mark the start of the time interval.</td>
+
        <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
    </tr>
 
    <tr>
 
      <td>End Day</td>
 
      <td>[Monday..Sunday] | [1..31]; default: <b>Tuesday | 1</b></td>
 
      <td>The day that marks the end of the time interval.</td>
 
    </tr>
 
    <tr>
 
      <td>End Time</td>
 
      <td>hh:mm ([00..23]:[00..59]); default: <b>12:00</b></td>
 
      <td>The hour and minute that mark the end of the time interval.</td>
 
    </tr>
 
    <tr>
 
      <td><span style="color: red;">Force Last Day</span></td>
 
      <td>off | on; default: <b>off</b></td>
 
      <td>Forces intervals to accept last day of month as a valid option if selected day does not exist during ongoing month. This field becomes visible only when 'Interval Type' is set to <i>Month Days</i>.</td>
 
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
A Scheduler Instance will not work unless you turn both the the Scheduler service and the individual instance on:
+
===Actions===
 
 
[[File:Networking_rutos_manual_input_output_scheduler_on_off_slider_configurableio_{{{configurableio}}}.png|border|class=tlt-border]]
 
 
 
==I/O Juggler==
 
 
 
The <b>I/O Juggler</b> is a feature that provides the possibility to create automated rules that perform certain actions based on Input state changes and other conditions. The operating sequence of I/O Juggler can be visualized as such:
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_scheme_condition_mobile_{{{mobile}}}.png|border|class=tlt-border]]
 
 
 
When an Input Trigger occurs, the Input check to see if user-specified conditions are also met. If so, it executes a user-specified action.
 
 
----
 
----
For example, if we configure the I/O Juggler like this:
 
  
<ul>
+
The <b>Actions</b> section lets you manage your created Actions for IO Juggler inputs.  
    <li><b>Trigger</b> - input state rising.</li>
+
The figure below is an example of Actions section.
    <li><b>Condition</b> - 8:00 AM - 5:00 PM.</li>
 
    <li><b>Action </b> - send email.</li>
 
</ul>
 
  
The operating sequence would look like this:
+
[[File:Networking_rutx_manual_input_output_iojuggler_actions_v1.png]]
  
<ol>
+
====Modify action====
    <li>A connected device raises the input state.</li>
 
    <li>This {{{name}}} device checks whether the current time is between 8:00 AM and 5:00 PM.
 
        <ul>
 
            <li><b>Yes</b> - {{{name}}} sends an email.</li>
 
            <li><b>No</b> - {{{name}}} doesn't send an email.</li>
 
        </ul>
 
    </li>
 
</ol>
 
 
----
 
----
You can specify multiple actions and multiple conditions for any I/O Juggler rule. Selecting conditions is optional. If there are no set or configured I/O Juggler conditions, the operating sequence is as such:
 
  
[[File:Networking_rutos_manual_input_output_io_juggler_scheme_mobile_{{{mobile}}}.png]]
+
[[File:Networking_rutx_manual_input_output_iojuggler_actions_modify_v1.png]]
 
 
===General===
 
----
 
The <b>General</b> section is used to Input Trigger rules, which can perform a specified user-configured action when the Input state changes and when certain other user-configured conditions are met (<u>conditions are optional</u>).
 
  
Before you can use the I/O Juggler, you must turn it on first (off by default). This can be done by setting the 'Enable' slider to "on"{{#ifeq:{{{configurableio}}}|1|<span class="asterisk">*</span>|}}:
+
Above is an example of what action configuration window looks like. Below is a table with detailed explanations on
 +
how to configure the action and what each of the fields mean. To avoid redundancy, screenshots for the other actions
 +
will not be provided, since the structures, syntax and the overall look of the configuration windows for each action
 +
are very similar. Instead, only tables containing information on how to edit each action will be provided.
  
[[File:Networking_rutos_manual_input_output_io_juggler_general_enabled.png|border|class=tlt-border]]
+
=====Profile=====
{{#ifeq:{{{configurableio}}}|1|<span class="asterisk">*</span> Input rules for Configurable I/O will work only when the type of the pin is set to "input"|}}
 
====Input====
 
 
----
 
----
The <b>Input</b> is used to create Input Rules. An Input Rule is triggered by a user-specified input state change. When this trigger occurs, the device executes a specified command if certain specified conditions are met (conditions are optional).
 
 
The Input list is empty by default. To create a new Input Rule, look to the Add Input section at the bottom of the page; select an input and click the 'Add' button:
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_general_input_add_button_juggler_input_{{{juggler_input}}}.png|border|class=tlt-border]]
 
 
After this you will be redirected to the configuration page for the newly added Rule, which should look similar to this:
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_general_input_configuration_juggler_input_{{{juggler_input}}}.png|border|class=tlt-border]]
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 406: Line 436:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Enabled</td>
+
         <td>Type</td>
         <td>off | on; default: <b>off</b> </td>
+
         <td>Profile</td>
 
         <td>Changes current profile to specified one when action triggers.</td>
 
         <td>Changes current profile to specified one when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Trigger interval</td>
+
         <td>Execution delay</td>
         <td>integer [0..99999999]; default: <b>1</b></td>
+
         <td>positive integer; default: <b>none</b></td>
         <td>The shortest amount of time (in seconds) between two triggers. If the input is triggered more than once in a time period shorter than the value specified in this field, the device will react to the first trigger.</td>
+
         <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Trigger</td>
+
         <td>Profile</td>
         <td>Rising | Falling | Both; default: <b>Rising</b> </td>
+
         <td>profile; default: <b>default</b> </td>
        <td>Input state change that will trigger this rule.</td>
+
         <td>Choose a profile that will be applied when the action triggers.</td>
    </tr>
 
    <tr>
 
        <td>Add actions</td>
 
        <td>i/o juggler action(s); default: <b>none</b> </td>
 
         <td>Actions that will be executed by this rule when the specified trigger and conditions (optional) occur.</td>
 
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Add conditions</td>
 
         <td>Add conditions</td>
         <td>i/o juggler conditions; default: <b>none</b> </td>
+
         <td>conditions; default: <b>none</b> </td>
         <td>Conditions that have to be met for the rule to take action. Conditions are optional.</td>
+
         <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
===Actions===
 
----
 
The <b>Actions</b> section is used to manage and create new Actions that can be executed by the I/O Juggler Rules. The figure below is an example of the Actions section, which is empty by default.
 
  
[[File:Networking_rutos_manual_input_output_io_juggler_actions_actions.png|border|class=tlt-border]]
+
=====Email=====
 
 
To create a new Action, look to the Add an Action section at the bottom of the page; enter a custom name, select an action type and click the 'Add' button:
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_actions_add_button.png|border|class=tlt-border]]
 
 
 
After this you will be redirected to the configuration page for the newly added Action, which should look similar to this (example for action 'Type: Reboot'):
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_actions_configuration_reboot.png|border|class=tlt-border]]
 
 
 
<b>Action configuration</b> depends on the selected action 'Type'. Each Action can have one or multiple user-defined [[#Conditions|Conditions]] assigned to it. Actions that have Conditions assigned to them are executed only if the Conditions are met (a trigger occurrence is not enough to set off these actions). Assigning to Actions is optional.
 
 
 
You will find descriptions of each different action Type described on the sections below.
 
 
 
====Type: Email====
 
 
----
 
----
Sends an email to specified recipients. Requires an existing email account configuration on the device. Email accounts can be configured in the System → Administration → Recipients → [[{{{name}}}_Administration#Email_Accounts|Email Accounts]] page.
 
 
{{#switch: {{{name}}}
 
| RUTX12| RUTM12 =  [[File:Networking rutos manual input output io juggler actions email rutx12 v2.png|border|class=tlt-border]]
 
| RUTX10 = [[File:Networking_rutos_manual_input_output_io_juggler_actions_email_rutx10_v2.png|border|class=tlt-border]]
 
| #default = [[File:Networking rutos manual input output io juggler actions email v2.png|border|class=tlt-border]]
 
}}
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 465: Line 465:
 
       <th>Value</th>
 
       <th>Value</th>
 
       <th>Description</th>
 
       <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>Email</td>
 +
        <td>Sends email when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 474: Line 479:
 
         <td>Text message</td>
 
         <td>Text message</td>
 
         <td>string; default: <b>none</b> </td>
 
         <td>string; default: <b>none</b> </td>
         <td>Email body text. Below this field you can find special codes that begin with the '%' sign. Each code represents a piece information related to the status of the device. Include these codes in the Text message for dynamic information reports.</td>
+
         <td>Text message to be sent in email. Below this field you can find device information and
 +
        their codes, which can be included in messages to send device information.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Execution delay</td>
 
         <td>Execution delay</td>
 
         <td>positive integer; default: <b>none</b></td>
 
         <td>positive integer; default: <b>none</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before the action is executed.</td>
+
         <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
     </tr>{{#switch: {{{name}}}
+
     </tr>
| RUTX12| RUTM12 =
 
 
     <tr>
 
     <tr>
         <td>Modem</td>
+
         <td>Email user</td>
         <td>Primary modem {{!}} Secondary modem; default: <b>Primary modem</b></td>
+
         <td>email user; default: <b>none</b></td>
         <td>Modem, which is used to get information from.</td>
+
         <td>Configured email user.</td>
     </tr>|}}
+
     </tr>
 
     <tr>
 
     <tr>
         <td>Email account</td>
+
         <td>Recipient's email address</td>
         <td>email account; default: <b>none</b></td>
+
         <td>string; default: <b>none</b></td>
         <td>Email account used to send the email. Email accounts can be configured in the System → Administration → Recipients → [[{{{name}}}_Administration#Email_Accounts|Email Accounts]] page.</td>
+
         <td>Email receiver(s).</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Recipient's email address</td>
+
         <td>Add conditions</td>
         <td>email; default: <b>none</b></td>
+
         <td>conditions; default: <b>none</b> </td>
         <td>Email address(es) of the message's receiver(s).</td>
+
         <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: Output====
+
{{#ifeq:{{{mobile}}}|0||
 +
=====SMS=====
 
----
 
----
Changes the state of a selected output pin.
+
<table class="nd-mantable">
 +
    <tr>
 +
        <th>Field</th>
 +
      <th>Value</th>
 +
      <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>SMS</td>
 +
        <td>Sends sms when action triggers.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Text message</td>
 +
        <td>string; default: <b>none</b> </td>
 +
        <td>Text message to be sent in sms. Below this field you can find device information and
 +
        their codes, which can be included in messages to send device information.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Execution delay</td>
 +
        <td>positive integer; default: <b>none</b></td>
 +
        <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Recipients</td>
 +
        <td><span style="color:red;">Single number</span> {{!}} <span style="color:blue;">Group</span>; default: <b>Single number</b></td>
 +
        <td>How many recipients will get the message.</td>
 +
    </tr>
 +
    <tr>
 +
        <td><span style="color:red;">Single number:</span> Recipient's phone number</td>
 +
        <td>number; default: <b>none</b></td>
 +
        <td>SMS receiver.</td>
 +
    </tr>
 +
    <tr>
 +
        <td><span style="color:blue;">Group:</span> Phone group</td>
 +
        <td>phone group; default: <b>none</b></td>
 +
        <td>SMS receivers.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Add conditions</td>
 +
        <td>conditions; default: <b>none</b> </td>
 +
        <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 +
    </tr>
 +
</table>
  
[[File:Networking_rutos_manual_input_output_io_juggler_actions_output_configurableio_{{{configurableio}}}.png|border|class=tlt-border]]
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
 +
}}
  
 +
=====Output=====
 +
----
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 510: Line 561:
 
       <th>Value</th>
 
       <th>Value</th>
 
       <th>Description</th>
 
       <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>Output</td>
 +
        <td>Changes Output state when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Execution delay</td>
 
         <td>Execution delay</td>
 
         <td>positive integer; default: <b>none</b></td>
 
         <td>positive integer; default: <b>none</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
         <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Control</td>
 
         <td>Control</td>
         <td>output; default: <b>{{#ifeq:{{{configurableio}}}|1|Configurable Input/Output (2)|Output (4)}}</b></td>
+
         <td>output; default: <b>Output(4)</b></td>
         <td>Selects the output controlled by this Action.</td>
+
         <td>Specifies the output of which the state will be changed.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Revert</td>
 
         <td>Revert</td>
         <td>integer; default: <b>0</b></td>
+
         <td>integer; default: <b>0</b> </td>
         <td>After how many seconds the state will revert. If left as 0 or empty the state will not revert.</td>
+
         <td>After how many seconds the state will revert. If left 0 or empty the state will not revert.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Maintain</td>
 
         <td>Maintain</td>
 
         <td>off | on; default: <b>on</b></td>
 
         <td>off | on; default: <b>on</b></td>
         <td>When set to 'on', the output maintains its new state after reboot (the state is changed in the config file as well).</td>
+
         <td>Maintain this IO state after reboot.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Invert</td>
 
         <td>Invert</td>
 
         <td>off | on; default: <b>off</b></td>
 
         <td>off | on; default: <b>off</b></td>
         <td>Inverts the state of the selected output, i.e., switches the output pin to a state that is opposite to its current one (high-to-low or low-to-high). This can be used instead of specifying a static state.</td>
+
         <td>On action inverts pin state.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>State copying</td>
 
         <td>State copying</td>
 
         <td>off | on; default: <b>off</b></td>
 
         <td>off | on; default: <b>off</b></td>
         <td>Copies the state from the selected input and applies it to the selected output. This can be used instead of specifying a static state.</td>
+
         <td>Copies the state from selected input to selected output.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>State</td>
 
         <td>State</td>
 
         <td>High | Low; default: <b>High</b></td>
 
         <td>High | Low; default: <b>High</b></td>
         <td>Specifies the state of the output pin that will be set by this Action.</td>
+
         <td>Specifies what state the output pin will be set to.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Add conditions</td>
 +
        <td>conditions; default: <b>none</b> </td>
 +
        <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: HTTP====
+
 
 +
=====HTTP=====
 
----
 
----
Executes a HTTP POST/GET request.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_actions_http_v2.png|border|class=tlt-border]]
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 559: Line 617:
 
       <th>Value</th>
 
       <th>Value</th>
 
       <th>Description</th>
 
       <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>HTTP</td>
 +
        <td>Sends HTTP request when action triggers.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Execution delay</td>
 +
        <td>positive integer; default: <b>none</b></td>
 +
        <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Method</td>
 
         <td>Method</td>
         <td>Get | Post; default: <b>Get</b></td>
+
         <td>Get {{!}} Post; default: <b>Get</b></td>
         <td>HTTP method to be used by this Action.</td>
+
         <td>Specifies the output of which the state will be changed.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>URL</td>
 
         <td>URL</td>
 
         <td>string; default: <b>none</b> </td>
 
         <td>string; default: <b>none</b> </td>
         <td>URL to send the HTTP Post/Get request to.</td>
+
         <td>URL to send request to.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Verify</td>
 
         <td>Verify</td>
 
         <td>off | on; default: <b>off</b></td>
 
         <td>off | on; default: <b>off</b></td>
         <td>Verifies the validity of certificates; only used with HTTPS.</td>
+
         <td>Verifies the validity of certificates, only works for https.</td>
    </tr>
 
    <tr>
 
        <td>Alt. parameters mode</td>
 
        <td><span style="color:red">off</span> | <span style="color:blue">on</span>; default: <b>off</b></td>
 
        <td>Choose a different way to pass parameters. If method is POST parameters are passed in request body. If method is GET parameters are passed throught the URL.</td>
 
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:red">Parameters</span></td>
+
         <td>Parameters</td>
 
         <td>string; default: <b>none</b></td>
 
         <td>string; default: <b>none</b></td>
         <td>Parameters that are to be included the Post/Get request. Select a parameter (right drop-down box) and enter a custom name for it (left text box).</td>
+
         <td>Parameters and their value from device for usage in Post or Get requests.  
 +
{{#switch:{{{name}}}
 +
| RUTX10 = Possible values: Time stamp, UNIX time, WAN MAC, Wired WAN IP, Network info, Product code, LAN MAC address, LAN IP address, Serial number, Current FW version, Monitoring status, Input Name, Input state change trigger </td>
 +
| RUTX08 = Possible values: Time stamp, UNIX time, WAN MAC, Wired WAN IP, Network info, Product code, LAN MAC address, LAN IP address, Serial number, Current FW version, Monitoring status, Input Name, Input state change trigger </td>
 +
| Possible values: Time stamp, UNIX time, WAN MAC, Wired WAN IP, Network info, Product code, LAN MAC address, LAN IP address, Serial number, Current FW version, Monitoring status, Input Name, Input state change trigger, RSCP, ECIO, SIM slot in use, CELLID, RSRQ, SINR, RSRP, SIM State, SIM pin state, Modem model, IMSI, Modem serial number , Network State, Data connection state, Connection type, Mobile IP, Operator name, Signal strenght, IMEI, ICCID, Neighbour cells, Network serving.</td>
 +
}}
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">Text message</span></td>
+
         <td>Add conditions</td>
        <td>default: <b>Device name - %rn; Time stamp - %ts</b></td>
+
         <td>conditions; default: <b>none</b> </td>
        <td>Message to send.</td>
+
         <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
    </tr>
 
    <tr>
 
        <td>Custom headers</td>
 
         <td>string; default: <b>none</b></td>
 
         <td>Allows to add custom headers to the HTTP requests.</td>
 
    </tr>
 
    <tr>
 
        <td>Execution delay</td>
 
        <td>positive integer; default: <b>none</b></td>
 
        <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
 
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: Script====
+
 
 +
=====Script=====
 
----
 
----
Executes a custom, user-written shell script.
 
 
{{#switch: {{{name}}}
 
| RUTX10 = [[File:Networking_rutos_manual_input_output_io_juggler_actions_script_rutx10_v1.png|border|class=tlt-border]]
 
| #default = [[File:Networking_rutos_manual_input_output_io_juggler_actions_script.png|border|class=tlt-border]]
 
}}
 
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 617: Line 668:
 
       <th>Value</th>
 
       <th>Value</th>
 
       <th>Description</th>
 
       <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>Script</td>
 +
        <td>Runs script when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Execution delay</td>
 
         <td>Execution delay</td>
 
         <td>positive integer; default: <b>none</b></td>
 
         <td>positive integer; default: <b>none</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
         <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Specify path</td>
 
         <td>Specify path</td>
         <td>Upload a script |Specify path; default: <b>Upload a script</b></td>
+
         <td><span style="color:red;">Upload a script</span> {{!}} <span style="color:blue;">Specify path</span>; default: <b>Upload a cript</b></td>
         <td>Specifies whether the script should be uploaded from an external file or a path to an internal (on this device) script file should be specified.</td>
+
         <td>Selection to upload a script or specify its absolute path in device.</td>
 +
    </tr>
 +
    <tr>
 +
        <td><span style="color:red;">Upload a script:</span> Custom script</td>
 +
        <td>-(interactive button)</td>
 +
        <td>Shows file upload window on click.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Custom script {{!}} Script file</td>
+
         <td><span style="color:blue;">Specify path:</span> Script file</td>
         <td>-(interactive button) | filepath</td>
+
         <td>string; default: <b>none</b></td>
         <td>Shows file upload window on click or provides the possibility to specify a path to an internal script file. The name and selection type of this field depends on the value set in the 'Specify path' field.</td>
+
         <td>Absolute path to script file in device.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Arguments</td>
 
         <td>Arguments</td>
         <td>string; default: <b>none</b></td>
+
         <td>string; default: <b>none</b> </td>
 
         <td>Optional arguments which can be provided for the script. You can include device information with values given below this input field.</td>
 
         <td>Optional arguments which can be provided for the script. You can include device information with values given below this input field.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Add conditions</td>
 +
        <td>conditions; default: <b>none</b> </td>
 +
        <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: Reboot====
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
 +
 
 +
=====Reboot=====
 
----
 
----
Reboots the device.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_actions_reboot.png|border|class=tlt-border]]
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 651: Line 715:
 
       <th>Value</th>
 
       <th>Value</th>
 
       <th>Description</th>
 
       <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>Reboot</td>
 +
        <td>Reboots device when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Execution delay</td>
 
         <td>Execution delay</td>
 
         <td>positive integer; default: <b>none</b></td>
 
         <td>positive integer; default: <b>none</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
         <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Add conditions</td>
 +
        <td>conditions; default: <b>none</b> </td>
 +
        <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: Profile====
+
{{#ifeq:{{{mobile}}}|0||
 +
    {{#ifeq:{{{series}}}|TRB14X||
 +
=====Change sim=====
 
----
 
----
Switches to using a specified Configuration Profile.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_actions_profile.png|border|class=tlt-border]]
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 670: Line 742:
 
       <th>Value</th>
 
       <th>Value</th>
 
       <th>Description</th>
 
       <th>Description</th>
 +
    </tr>
 +
    <tr>
 +
        <td>Type</td>
 +
        <td>Change sim</td>
 +
        <td>Changes active sim card when action triggers.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
         <td>Execution delay</td>
 
         <td>Execution delay</td>
 
         <td>positive integer; default: <b>none</b></td>
 
         <td>positive integer; default: <b>none</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
         <td>How many seconds will pass before the action is excecuted after it's triggered.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Profile</td>
+
         <td>Flip</td>
         <td>profile; default: <b>default</b> </td>
+
         <td><span style="color:red;">off</span> {{!}} on; default: <b>off</b></td>
         <td>Configuration Profile that will be applied by this Action. Configuration Profiles can be defined in the System → [[{{{name}}}_Profiles|Profiles]] page.</td>
+
         <td>Switches to a different sim card.</td>
 +
    </tr>
 +
    <tr>
 +
        <td><span style="color:red;">Off:</span> Target</td>
 +
        <td>Sim1 {{!}} Sim2; default: <b>Sim1</b></td>
 +
        <td>Switches to a selected sim card.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Add conditions</td>
 +
        <td>conditions; default: <b>none</b> </td>
 +
        <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: RMS====
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
 +
    }}
 +
}}
 +
===Conditions===
 
----
 
----
Enables or disables RMS service.
 
  
[[File:Networking_rutos_manual_input_output_io_juggler_actions_rms_v1.png|border|class=tlt-border]]
+
The <b>Conditions</b> section lets you manage your created Conditions for IO Juggler Actions.
 +
The figure below is an example of Conditions section.
  
 +
[[File:Networking_rutx_manual_input_output_iojuggler_conditions_v1.png]]
 +
 +
====Modify condition====
 +
----
 +
 +
[[File:Networking_rutx_manual_input_output_iojuggler_conditions_modify_v1.png]]
 +
 +
Above is an example of what condition configuration window looks like. Below is a table with detailed explanations on
 +
how to configure the condition and what each of the fields mean. To avoid redundancy, screenshots for the other conditions
 +
will not be provided, since the structures, syntax and the overall look of the configuration windows for each condition
 +
are very similar. Instead, only tables containing information on how to edit each condition will be provided.
 +
 +
=====Boolean group=====
 +
----
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 696: Line 800:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Execution delay</td>
+
         <td>Condition type</td>
         <td>positive integer; default: <b>none</b></td>
+
         <td>Boolean group</td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
        <td>A type of condition.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Boolean type</td>
 +
        <td>AND {{!}} NAND {{!}} OR {{!}} NOR; default: <b>AND</b></td>
 +
         <td>Type of boolean condition.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Enable RMS</td>
+
         <td>Add conditions</td>
         <td>off {{!}} on; default: <b>off</b> </td>
+
         <td>conditions; default: <b>none</b> </td>
         <td>Specifies whether RMS service will be enabled or disabled with this action.</td>
+
         <td>Specifies conditions which have to be met for action to occur. Conditions are optional.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
====Type: MQTT====
+
 
 +
=====I/O=====
 
----
 
----
Executes a MQTT action.
 
 
{{#switch: {{{name}}}
 
| RUTX10 = [[File:Networking_rutos_manual_input_output_io_juggler_actions_mqtt_rutx10_v1.png|border|class=tlt-border]]
 
| #default = [[File:Networking rutos manual input output io juggler actions mqtt_v1.png|border|class=tlt-border]]
 
}}
 
 
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 725: Line 826:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Text message</td>
+
         <td>Condition type</td>
         <td>string; default: <b>none</b> </td>
+
         <td>I/O</td>
         <td>Below this field you can find special codes that begin with the '%' sign. Each code represents a piece information related to the status of the device. Include these codes in the Text message for dynamic information reports.
+
         <td>A type of condition.</td>
        </td>
 
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Topic</td>
+
         <td>I/O</td>
         <td>string; default: <b>none</b></td>
+
         <td>inputs/outputs; default: <b>Output(4)</b></td>
         <td>The name of the topic that the broker will subscribe to.</td>
+
         <td>Specifies the I/O to which the condition is listening to.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Client ID</td>
+
         <td>State</td>
         <td>string; default: <b>none</b></td>
+
         <td>High {{!}} Low; default: <b>High</b> </td>
         <td>Client ID to send with the data. If empty, a random client ID will be generated.</td>
+
         <td>Specifies in what state the pin has to be.</td>
 
     </tr>
 
     </tr>
 +
</table>
 +
 +
 +
{{#ifeq:{{{series}}}|RUTX||
 +
=====Analog voltage=====
 +
----
 +
<table class="nd-mantable">
 
     <tr>
 
     <tr>
         <td>Hostname</td>
+
         <th>Field</th>
        <td>host | ip; default: <b>none</b> </td>
+
      <th>Value</th>
        <td>Broker’s IP address or hostname.</td>
+
      <th>Description</th>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Port</td>
+
         <td>Condition type</td>
         <td>integer [0..65535]; default: <b>1883</b></td>
+
         <td>Analog voltage</td>
         <td>Broker's port number.</td>
+
         <td>A type of condition.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Keepalive</td>
+
         <td>Condition</td>
         <td>positive integer; default: <b>none</b></td>
+
         <td>Inside voltage {{!}} Outside voltage; default: <b>Inside voltage</b> </td>
         <td>The number of seconds after which the broker should send a PING message to the client if no other messages have been exchanged in that time</td>
+
         <td>Whether to evaluate the condition as true inside or outside the specified range.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Qos</td>
+
         <td>Input</td>
         <td>At most once (0) | At least once (1) | Exactly once (2); default: <b>At most once (0)</b></td>
+
         <td>inputs; default: <b>none</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
         <td>Specifies the analog input to which the condition is listening to.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Username</td>
+
         <td>Min voltage</td>
         <td>string; default: <b>none</b></td>
+
         <td>positive float; default: <b>none</b></td>
         <td>Username used for authentication to the Broker.</td>
+
         <td>Specifies minimum voltage of range.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Password</td>
+
         <td>Max voltage</td>
         <td>string; default: <b>none</b></td>
+
         <td>positive float; default: <b>none</b></td>
         <td>Password used for authentication to the Broker.</td>
+
         <td>Specifies magimum voltage of range.</td>
 
     </tr>
 
     </tr>
 +
</table>
 +
}}
 +
 +
 +
=====Minute=====
 +
----
 +
<table class="nd-mantable">
 
     <tr>
 
     <tr>
         <td>TLS</td>
+
         <th>Field</th>
        <td>off {{!}} <span style="color:blue">on</span>; default: <b>off</b></td>
+
      <th>Value</th>
        <td>Select to enable TLS encryption.</td>
+
      <th>Description</th>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">TLS Type</span></td>
+
         <td>Condition type</td>
         <td>Certificate based {{!}} Pre-Shared-Key based; default: <b>Certificate based</b></td>
+
         <td>Minute</td>
         <td>Type of TLS encryption.</td>
+
         <td>A type of condition.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">Certificate based:</span>Allow insecure connection</td>
+
         <td>Inverted function</td>
         <td>off {{!}} on; default: <b>off</b></td>
+
         <td>off {{!}} on; default: <b>off</b> </td>
         <td>Allow not verifying server authenticity.</td>
+
         <td>Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.</td>
    </tr>
 
    <tr>
 
        <td><span style="color:blue">Certificate based:</span>Certificate files from device</td>
 
        <td>off {{!}} on; default: <b>off</b></td>
 
        <td>Choose this option if you want to select certificate files from device.</td>
 
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">Certificate based:</span>CA file</td>
+
        <td>Interval</td>
        <td>.crt file; default: <b>none</b></td>
+
         <td><span style="color:red;">off</span> | <span style="color:blue;">on</span>; default: <b>off</b></td>
         <td>Upload CA file.</td>
+
         <td>Switches between a specific value and a time interval.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">Certificate based:</span>Certificate file</td>
+
         <td><span style="color:red;">Off:</span> Minute</td>
         <td>.crt file; default: <b>none</b></td>
+
         <td>integer [0..59]; default: <b>none</b></td>
         <td>TLS client or server certificate file.</td>
+
         <td>Specifies minute at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">Certificate based:</span>Key file</td>
+
         <td><span style="color:blue ;">On:</span> Start minute</td>
         <td>.key file; default: <b>none</b></td>
+
         <td>integer [0..59]; default: <b>none</b></td>
         <td>TLS client or server key file.</td>
+
         <td>Specifies starting minute of the interval at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td><span style="color:blue">Pre-Shared-Key based:</span>Pre-Shared-Key</td>
+
         <td><span style="color:blue ;">On:</span> End minute</td>
         <td>string; default: <b>none</b></td>
+
         <td>integer [0..59]; default: <b>none</b></td>
        <td>The pre-shared-key in hex format with no leading “0x”.</td>
+
         <td>Specifies ending minute of the interval at which the action can occur.</td>
    </tr>
 
    <tr>
 
        <td><span style="color:blue">Pre-Shared-Key based:</span>Identity</td>
 
        <td>string; default: <b>none</b></td>
 
         <td>Specify the Identity.</td>
 
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
 +
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
  
{{#ifeq: {{{dualsim}}} | 1 |
+
=====Hour=====
====Type: SIM switch====
 
 
----
 
----
Switches to using the specified SIM card.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_actions_change_sim_v2.png|border|class=tlt-border]]
 
 
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 832: Line 932:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Execution delay</td>
+
         <td>Condition type</td>
         <td>positive integer; default: <b>none</b></td>
+
         <td>Hour</td>
         <td>A period of time (in seconds) which has to pass after a trigger event before this Action is executed.</td>
+
        <td>A type of condition.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Inverted function</td>
 +
        <td>off {{!}} on; default: <b>off</b> </td>
 +
         <td>Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Interval</td>
 +
        <td><span style="color:red;">off</span> | <span style="color:blue;">on</span>; default: <b>off</b></td>
 +
        <td>Switches between a specific value and a time interval.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Flip</td>
+
         <td><span style="color:red;">Off:</span> Hour</td>
         <td>off {{!}} on; default: <b>off</b></td>
+
         <td>integer [0..59]; default: <b>none</b></td>
         <td>When set to 'on', switches to the opposite SIM card (the that is currently NOT in use). This can be used instead of selecting a specific SIM card to switch to.</td>
+
         <td>Specifies hour at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Enable primary option transfer</td>
+
         <td><span style="color:blue ;">On:</span> Start hour</td>
         <td>off {{!}} on; default: <b>off</b></td>
+
         <td>integer [0..59]; default: <b>none</b></td>
         <td>Enables simd service to change primary card while switching sims </td>
+
         <td>Specifies starting hour of the interval at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Target</td>
+
         <td><span style="color:blue ;">On:</span> End hour</td>
         <td>SIM1 {{!}} SIM2; default: <b>SIM1</b></td>
+
         <td>integer [0..59]; default: <b>none</b></td>
         <td>Selects a SIM card to switch to. This field is visible only when the 'Flip' field is set to 'off'.</td>
+
         <td>Specifies ending hour of the interval at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
|}}
 
{{#ifeq: {{{mobile}}} | 1 |
 
====Type: SMS====
 
----
 
Sends an SMS message to specified recipients.
 
  
[[File:Networking_rutos_manual_input_output_io_juggler_actions_sms.png|border|class=tlt-border]]
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
  
 +
=====Weekday=====
 +
----
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 867: Line 974:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Text message</td>
+
         <td>Condition type</td>
         <td>string; default: <b>none</b> </td>
+
         <td>Weekday</td>
         <td>SMS body text. Below this field you can find special codes that begin with the '%' sign. Each code represents a piece information related to the status of the device. Include these codes in the Text message for dynamic information reports.</td>
+
        <td>A type of condition.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Inverted function</td>
 +
        <td>off {{!}} on; default: <b>off</b> </td>
 +
         <td>Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Interval</td>
 +
        <td><span style="color:red;">off</span> | <span style="color:blue;">on</span>; default: <b>off</b></td>
 +
        <td>Switches between a specific value and a time interval.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Execution delay</td>
+
         <td><span style="color:red;">Off:</span> Weekday</td>
         <td>positive integer; default: <b>none</b></td>
+
         <td>weekday; default: <b>Monday</b></td>
         <td>A period of time (in seconds) which has to pass after a trigger event before the action is executed.</td>
+
         <td>Specifies weekday at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Recipients</td>
+
         <td><span style="color:blue ;">On:</span> Start weekday</td>
         <td>Single number {{!}} Group; default: <b>Single number</b></td>
+
         <td>weekday; default: <b>Monday</b></td>
         <td>Defines whether the SMS message will be sent to a single number or multiple numbers included in a user-configured Phone group. Phone groups can be configured in the System → Administration → Recipients → [[{{{name}}}_Administration#Phone_Groups|Phone Groups]] page.</td>
+
         <td>Specifies starting weekday of the interval at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Recipient's phone number {{!}} Phone group</td>
+
         <td><span style="color:blue ;">On:</span> End weekday</td>
         <td>phone number {{!}} phone group; default: <b>none</b></td>
+
         <td>weekday; default: <b>Monday</b></td>
         <td>Phone number of a single recipient or a Phone group of multiple recipients. The name and selection type of this field depends on the value set in the 'Recipients' field.</td>
+
         <td>Specifies ending weekday of the interval at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
|}}
 
{{#ifeq: {{{wifi}}} | 1 |
 
====Type: WiFi====
 
----
 
Sends an SMS message to specified recipients.
 
  
[[File:Networking_rutos_manual_input_output_io_juggler_actions_wifi_v1.png|border|class=tlt-border]]
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
  
 +
=====Month day=====
 +
----
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 902: Line 1,016:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Execution delay</td>
+
         <td>Condition type</td>
         <td>positive integer; default: <b>none</b></td>
+
         <td>Month day</td>
         <td>A period of time (in seconds) which has to pass after a trigger event before the action is executed.</td>
+
        <td>A type of condition.</td>
 +
    </tr>
 +
    <tr>
 +
        <td>Month override</td>
 +
        <td>off {{!}} on; default: <b>off</b> </td>
 +
         <td>If the option is selected and the specified day is not in the month then the condition uses the last day of the month.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Enable WiFi</td>
+
         <td>Interval</td>
         <td>off {{!}} on; default: <b>off</b></td>
+
         <td><span style="color:red;">off</span> | <span style="color:blue;">on</span>; default: <b>off</b></td>
         <td>Specifies whether all WiFi interfaces will be enabled/disabled with this action.</td>
+
         <td>Switches between a specific value and a time interval.</td>
 
     </tr>
 
     </tr>
</table>
 
|}}
 
 
===Conditions===
 
----
 
The <b>Conditions</b> section is used to manage and created Conditions for I/O Juggler Actions. The figure below is an example of the Conditions section, which is empty by default.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_conditions.png|border|class=tlt-border]]
 
 
To create a new Condition, look to the Add a Condition section; enter a custom name, select the Type of the Condition and click the 'Add' button.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_conditions_add_button.png|border|class=tlt-border]]
 
 
After this you should be redirected to the configuration page of the newly added Condition. You will find descriptions of each different Condition type described on the sections below.
 
 
====Condition type: I/O====
 
----
 
I/O Condition type tracks the state of a selected input or output pin and considers the Condition as MET if that pin is in a user-specified state.
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_conditions_io_configurableio_{{{configurableio}}}.png|border|class=tlt-border]]
 
 
<table class="nd-mantable">
 
 
     <tr>
 
     <tr>
         <th>Field</th>
+
         <td><span style="color:red;">Off:</span> Day of the month</td>
      <th>Value</th>
+
        <td>integer [1..31]; default: <b>none</b></td>
      <th>Description</th>
+
        <td>Specifies day of the month at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>I/O</td>
+
         <td><span style="color:blue ;">On:</span> Start day of the month</td>
         <td>inputs/outputs; default: <b>Output(4)</b></td>
+
         <td>integer [1..31]; default: <b>none</b></td>
         <td>Specifies the I/O pin to which this Condition is listening to.</td>
+
         <td>Specifies starting day of the interval of the month at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>State</td>
+
         <td><span style="color:blue ;">On:</span> End day of the month</td>
         <td>High | Low; default: <b>High</b></td>
+
         <td>integer [1..31]; default: <b>none</b></td>
         <td>Specifies in what state the pin has to be in in order for the Condition to be met.</td>
+
         <td>Specifies ending day of the interval of the month at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
{{#ifeq: {{{analog}}} | 1 |
 
====Condition type: Analog voltage====
 
----
 
Analog voltage Condition type measures the value of the Analog input and checks whether it inside or outside the user-specified range.
 
  
[[File:Networking_rutos_manual_input_output_io_juggler_conditions_analog_voltage.png|border|class=tlt-border]]
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
  
 +
=====Year=====
 +
----
 
<table class="nd-mantable">
 
<table class="nd-mantable">
 
     <tr>
 
     <tr>
Line 963: Line 1,058:
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Condition</td>
+
         <td>Condition type</td>
         <td>Inside voltage {{!}} Outside voltage; default: <b>Inside voltage</b> </td>
+
         <td>Year</td>
         <td>Whether to evaluate the condition as true inside or outside the specified range.</td>
+
         <td>A type of condition.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Input</td>
+
         <td>Inverted function</td>
         <td>inputs; default: <b>none</b></td>
+
         <td>off {{!}} on; default: <b>off</b> </td>
         <td>Specifies the analog input to which the condition is listening to.</td>
+
         <td>Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Min voltage</td>
+
         <td>Interval</td>
         <td>positive float; default: <b>none</b></td>
+
         <td><span style="color:red;">off</span> | <span style="color:blue;">on</span>; default: <b>off</b></td>
         <td>Specifies minimum voltage of range.</td>
+
         <td>Switches between a specific value and a time interval.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Max voltage</td>
+
         <td><span style="color:red;">Off:</span> Day of the year</td>
        <td>positive float; default: <b>none</b></td>
+
         <td>integer [1..366]; default: <b>none</b></td>
         <td>Specifies magimum voltage of range.</td>
+
        <td>Specifies day of the year at which the action can occur.</td>
    </tr>
 
</table>
 
|}}
 
====Condition type: Boolean group====
 
----
 
Boolean Group will evaluate two or more existing conditions based on selected Boolean type. A Boolean Group condition will considered as MET based on the outcome of the evaluation performed along with one of the available Boolean types:
 
 
 
<ul>
 
    <li><b>AND</b> - all selected conditions evaluate as TRUE.</li>
 
    <li><b>NAND</b> - at least one selected condition evaluates as FALSE.</li>
 
    <li><b>OR</b> - at least one selected condition evaluates as TRUE.</li>
 
    <li><b>NOR</b> - none of the selected conditions evaluate as TRUE.</li>
 
</ul>
 
 
 
For example, if we have two time Conditions (hour and minute) and a third Condition of Boolean group: AND, both Conditions 1 & 2 have to be met for Condition 3 to be evaluated as TRUE.
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_boolean_group_scheme_true.png|border|class=tlt-border]]
 
 
 
In this case, if at least one condition is no longer met, the Boolean group: AND Condition is evaluated as FALSE.
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_boolean_group_scheme_false.png|border|class=tlt-border]]
 
----
 
Below is an example of Condition type: Boolean group configuration.
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_conditions_boolean_group.png|border|class=tlt-border]]
 
 
 
<table class="nd-mantable">
 
    <tr>
 
        <th>Field</th>
 
      <th>Value</th>
 
      <th>Description</th>
 
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Boolean type</td>
+
         <td><span style="color:blue ;">On:</span> Start day of the year</td>
         <td>AND | NAND | OR | NOR; default: <b>AND</b></td>
+
         <td>integer [1..366]; default: <b>none</b></td>
         <td>Type of boolean condition.</td>
+
         <td>Specifies starting day of the interval of the year at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
         <td>Add conditions</td>
+
         <td><span style="color:blue ;">On:</span> End day of the year</td>
         <td>conditions; default: <b>none</b> </td>
+
         <td>integer [1..366]; default: <b>none</b></td>
         <td>Specifies conditions which have to be met for action to occur.</td>
+
         <td>Specifies ending day of the interval of the year at which the action can occur.</td>
 
     </tr>
 
     </tr>
 
</table>
 
</table>
  
 
+
<b>Note</b>: this table has coloring scheme to indicate which fields can be seen with different configuration.
 
 
====Condition types: Date/Time====
 
----
 
Lastly, you can configure Conditions based on date and time. Date/time Conditions can be configured based on:
 
 
 
<ul>
 
    <li><b>Minute</b> of the hour</li>
 
    <li><b>Hour</b> of the day</li>
 
    <li><b>Day</b> of the <b>Week</b></li>
 
    <li><b>Day</b> of the <b>Month</b></li>
 
    <li><b>Day</b> of the <b>Year</b></li>
 
</ul>
 
 
 
[[File:Networking_rutos_manual_input_output_io_juggler_conditions_date_time.png|border|class=tlt-border]]
 
 
 
Each type can be configured in two distinct ways:
 
 
 
<ol>
 
    <li><b>Specific time</b> - configured as a single value which defines the exact time when the Condition is considered as TRUE. e.g.:
 
        <ul>
 
            <li>Hour: <b>8</b></li>
 
            <li>Day of Month: <b>1</b></li>
 
        </ul>
 
    </li>
 
    <li><b>Time interval</b> - configured with a start and an end value which define a window of time during which the Condition is considered as TRUE. e.g.:
 
        <ul>
 
            <li>Hours: <b>8-12</b></li>
 
            <li>Days of Month: <b>1-12</b></li>
 
        </ul>
 
    </li>
 
</ol>
 
  
 
[[Category:{{{name}}} Services section]]
 
[[Category:{{{name}}} Services section]]

Revision as of 10:12, 8 June 2020

Template:Networking rutos manual fw disclosure

Summary

Inputs and outputs are used for monitoring and controlling a connected device or receiving signals from that device in order to trigger certain events. This chapter is an overview of the Input/Output section for {{{name}}} devices.

If you're having trouble finding this page or some of the parameters described here on your device's WebUI, you should turn on "Advanced WebUI" mode. You can do that by clicking the "Advanced" button, located at the top of the WebUI.

Networking rutos manual webui basic advanced mode 75.gif


Status

The Status page displays the current states of the device input and output:

File:Networking rutx manual input output status v2.png

You can invert Input pin by clicking on clider in Inversion column and switch Output pin state by clicking on slider in State column.

Status from command line


You can also obtain the status of the input or output from the command line. List of ubus possible values in {{{name}}} devices:

ioman.gpio.din1
ioman.gpio.dout1

Call command ubus call value status :

root@Teltonika-{{{name}}}:~# ubus call ioman.gpio.dout1 status
{
        "value": "0",
        "direction": "in",
        "bi_dir": false,
        "invert_input": false
}
  • din1 is the input:
    • "value": "0" means low level state.
    • "value": "1" means high level state.
  • dout1 is the output:
    • "value": "0" means low level state.
    • "value": "1" means high level state.

Post/Get

Enabling Post/Get will allow you to send HTTP POST/GET requests to device which controls the state of the output. The figure below is an example of the Post/Get configuration section and the table below provides information on the fields contained in that section:

Networking rutx manual input output post get v1.png

Field Value Description
Enable off | on; default: off Turns Post/Get on or off.
Username string; default: none Username used for authentication in POST/GET queries.
Password string; default: none Password used for authentication in POST/GET queries.

Post/Get examples


It is possible to turn the output on and off by using a valid HTTP POST/GET syntax. Use a web browser or any other compatible software to submit HTTP POST/GET strings to the device.

Below is a table containing syntax examples of this usage:

Action POST/GET URL
Turn Output state to high http://192.168.1.1/cgi-bin/io_state?username=user1&password=user1&pin=dout1&state=on
Turn Output state to low after 5 seconds for 3 seconds http://192.168.1.1/cgi-bin/io_state?username=user1&password=user1&pin=dout1&state=on&delay=5&time=3

Overview:

  • 192.168.1.1 - device default LAN IP address; replace it in accordance with your own configuration.
  • username - login name from Post/Get configuration.
  • password- password from Post/Get configuration.
  • state - turn Output on or off.
  • delay - defines a delay (in seconds) after which the specified action will be performed.
  • time - defines a window of time during which the action will take place. For instance, if you post an on action while specifying time=5, the output will turn on and stay on for 5 seconds before turning off.

Delay and time parameters can be used together. For example, if delay is 10, time is 5, action is on, then 10 seconds after the execution of the command, the output will switch to on (or stay in on state if it was already that way), then after 5 more seconds it will switch to off state. In this case the overall command execution time is 15 seconds.

Scheduler

With the help of the output Scheduler you can configure a timetable of when the output should be enabled or disabled based on date and time. By default everything is unset.

Networking rutx manual input output output scheduler v2.png

Io juggler

The Io juggler page is used create automated actions based on Input state and conditions.

General


The General section allows you to create automated Actions based on selected Inputs and their trigger state. The figure below is an example of Conditions section.

Networking rutx manual input output iojuggler general v1.png


Modify Input configuration


You can find explanation about fields in the table below this illustration.

Networking rutx manual input output iojuggler general modify v1.png

Field Value Description
Enabled off | on; default: off Changes current profile to specified one when action triggers.
Trigger interval positive integer; default: none Specifies what is the shortest amount of seconds between triggers.
Trigger Rising | Falling | Both; default: Rising Specifies on which trigger state this rule will be activated.
Add actions actions; default: none Specifies actions which have to be met for rule to be executed. Actions are optional.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.

Actions


The Actions section lets you manage your created Actions for IO Juggler inputs. The figure below is an example of Actions section.

Networking rutx manual input output iojuggler actions v1.png

Modify action


Networking rutx manual input output iojuggler actions modify v1.png

Above is an example of what action configuration window looks like. Below is a table with detailed explanations on how to configure the action and what each of the fields mean. To avoid redundancy, screenshots for the other actions will not be provided, since the structures, syntax and the overall look of the configuration windows for each action are very similar. Instead, only tables containing information on how to edit each action will be provided.

Profile

Field Value Description
Type Profile Changes current profile to specified one when action triggers.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Profile profile; default: default Choose a profile that will be applied when the action triggers.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.


Email

Field Value Description
Type Email Sends email when action triggers.
Subject string; default: none Subject of email.
Text message string; default: none Text message to be sent in email. Below this field you can find device information and their codes, which can be included in messages to send device information.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Email user email user; default: none Configured email user.
Recipient's email address string; default: none Email receiver(s).
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.
SMS

Field Value Description
Type SMS Sends sms when action triggers.
Text message string; default: none Text message to be sent in sms. Below this field you can find device information and their codes, which can be included in messages to send device information.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Recipients Single number | Group; default: Single number How many recipients will get the message.
Single number: Recipient's phone number number; default: none SMS receiver.
Group: Phone group phone group; default: none SMS receivers.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Output

Field Value Description
Type Output Changes Output state when action triggers.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Control output; default: Output(4) Specifies the output of which the state will be changed.
Revert integer; default: 0 After how many seconds the state will revert. If left 0 or empty the state will not revert.
Maintain off | on; default: on Maintain this IO state after reboot.
Invert off | on; default: off On action inverts pin state.
State copying off | on; default: off Copies the state from selected input to selected output.
State High | Low; default: High Specifies what state the output pin will be set to.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.


HTTP

Field Value Description
Type HTTP Sends HTTP request when action triggers.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Method Get | Post; default: Get Specifies the output of which the state will be changed.
URL string; default: none URL to send request to.
Verify off | on; default: off Verifies the validity of certificates, only works for https.
Parameters string; default: none Parameters and their value from device for usage in Post or Get requests. Possible values: Time stamp, UNIX time, WAN MAC, Wired WAN IP, Network info, Product code, LAN MAC address, LAN IP address, Serial number, Current FW version, Monitoring status, Input Name, Input state change trigger, RSCP, ECIO, SIM slot in use, CELLID, RSRQ, SINR, RSRP, SIM State, SIM pin state, Modem model, IMSI, Modem serial number , Network State, Data connection state, Connection type, Mobile IP, Operator name, Signal strenght, IMEI, ICCID, Neighbour cells, Network serving.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.


Script

Field Value Description
Type Script Runs script when action triggers.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Specify path Upload a script | Specify path; default: Upload a cript Selection to upload a script or specify its absolute path in device.
Upload a script: Custom script -(interactive button) Shows file upload window on click.
Specify path: Script file string; default: none Absolute path to script file in device.
Arguments string; default: none Optional arguments which can be provided for the script. You can include device information with values given below this input field.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Reboot

Field Value Description
Type Reboot Reboots device when action triggers.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.
Change sim

Field Value Description
Type Change sim Changes active sim card when action triggers.
Execution delay positive integer; default: none How many seconds will pass before the action is excecuted after it's triggered.
Flip off | on; default: off Switches to a different sim card.
Off: Target Sim1 | Sim2; default: Sim1 Switches to a selected sim card.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Conditions


The Conditions section lets you manage your created Conditions for IO Juggler Actions. The figure below is an example of Conditions section.

Networking rutx manual input output iojuggler conditions v1.png

Modify condition


Networking rutx manual input output iojuggler conditions modify v1.png

Above is an example of what condition configuration window looks like. Below is a table with detailed explanations on how to configure the condition and what each of the fields mean. To avoid redundancy, screenshots for the other conditions will not be provided, since the structures, syntax and the overall look of the configuration windows for each condition are very similar. Instead, only tables containing information on how to edit each condition will be provided.

Boolean group

Field Value Description
Condition type Boolean group A type of condition.
Boolean type AND | NAND | OR | NOR; default: AND Type of boolean condition.
Add conditions conditions; default: none Specifies conditions which have to be met for action to occur. Conditions are optional.


I/O

Field Value Description
Condition type I/O A type of condition.
I/O inputs/outputs; default: Output(4) Specifies the I/O to which the condition is listening to.
State High | Low; default: High Specifies in what state the pin has to be.


Analog voltage

Field Value Description
Condition type Analog voltage A type of condition.
Condition Inside voltage | Outside voltage; default: Inside voltage Whether to evaluate the condition as true inside or outside the specified range.
Input inputs; default: none Specifies the analog input to which the condition is listening to.
Min voltage positive float; default: none Specifies minimum voltage of range.
Max voltage positive float; default: none Specifies magimum voltage of range.


Minute

Field Value Description
Condition type Minute A type of condition.
Inverted function off | on; default: off Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.
Interval off | on; default: off Switches between a specific value and a time interval.
Off: Minute integer [0..59]; default: none Specifies minute at which the action can occur.
On: Start minute integer [0..59]; default: none Specifies starting minute of the interval at which the action can occur.
On: End minute integer [0..59]; default: none Specifies ending minute of the interval at which the action can occur.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Hour

Field Value Description
Condition type Hour A type of condition.
Inverted function off | on; default: off Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.
Interval off | on; default: off Switches between a specific value and a time interval.
Off: Hour integer [0..59]; default: none Specifies hour at which the action can occur.
On: Start hour integer [0..59]; default: none Specifies starting hour of the interval at which the action can occur.
On: End hour integer [0..59]; default: none Specifies ending hour of the interval at which the action can occur.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Weekday

Field Value Description
Condition type Weekday A type of condition.
Inverted function off | on; default: off Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.
Interval off | on; default: off Switches between a specific value and a time interval.
Off: Weekday weekday; default: Monday Specifies weekday at which the action can occur.
On: Start weekday weekday; default: Monday Specifies starting weekday of the interval at which the action can occur.
On: End weekday weekday; default: Monday Specifies ending weekday of the interval at which the action can occur.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Month day

Field Value Description
Condition type Month day A type of condition.
Month override off | on; default: off If the option is selected and the specified day is not in the month then the condition uses the last day of the month.
Interval off | on; default: off Switches between a specific value and a time interval.
Off: Day of the month integer [1..31]; default: none Specifies day of the month at which the action can occur.
On: Start day of the month integer [1..31]; default: none Specifies starting day of the interval of the month at which the action can occur.
On: End day of the month integer [1..31]; default: none Specifies ending day of the interval of the month at which the action can occur.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

Year

Field Value Description
Condition type Year A type of condition.
Inverted function off | on; default: off Inverts the selected condition type. Makes the condition true if the time/date is outside the specified interval.
Interval off | on; default: off Switches between a specific value and a time interval.
Off: Day of the year integer [1..366]; default: none Specifies day of the year at which the action can occur.
On: Start day of the year integer [1..366]; default: none Specifies starting day of the interval of the year at which the action can occur.
On: End day of the year integer [1..366]; default: none Specifies ending day of the interval of the year at which the action can occur.

Note: this table has coloring scheme to indicate which fields can be seen with different configuration.

[[Category:{{{name}}} Services section]]