Jump to content

Template:Networking rutos manual data to server: Difference between revisions

No edit summary
No edit summary
 
(67 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<!-- Template uses {{{name}}}, {{{series}}}, {{{bluetooth}}}, {{{wifi}}}-->
<!-- Template uses {{{name}}}, {{{series}}}, {{{bluetooth}}}, {{{wifi}}}-->
{{Template: Networking_rutos_manual_fw_disclosure
{{Template: Networking_device_manual_fw_disclosure
| fw_version ={{Template: Networking_rutos_manual_latest_fw
| series = {{{series}}}
| name  = {{{name}}}
| fw_version ={{Template: Networking_device_manual_latest_fw
  | series = {{{series}}}
  | series = {{{series}}}
  | name  = {{{name}}}
  | name  = {{{name}}}
  }}
  }}
}}
}}
{{#ifeq: {{{series}}} | RUT9 |<br><i><b>Note</b>: <b>[[{{{name}}} Modbus (legacy WebUI)#Modbus_Data_to_Server|click here]]</b> for the old style WebUI (FW version {{Template: Networking_rutos_manual_latest_fw | series = RUT9XX}} and earlier) user manual page.</i>|}}
{{#ifeq: {{{series}}} | RUT9 |<br><i><b>Note</b>: <b>[[{{{name}}} Modbus (legacy WebUI)#Modbus_Data_to_Server|click here]]</b> for the old style WebUI (FW version {{Template: Networking_device_manual_latest_fw | series = RUT9XX}} and earlier) user manual page.</i>|}}
{{#ifeq: {{{series}}} | RUT2 |<br><i><b>Note</b>: <b>[[{{{name}}} Modbus (legacy WebUI)#Modbus_Data_to_Server|click here]]</b> for the old style WebUI (FW version {{Template: Networking_rutos_manual_latest_fw | series = RUT2XX}} and earlier) user manual page.</i>|}}
{{#ifeq: {{{series}}} | RUT2 |<br><i><b>Note</b>: <b>[[{{{name}}} Modbus (legacy WebUI)#Modbus_Data_to_Server|click here]]</b> for the old style WebUI (FW version {{Template: Networking_device_manual_latest_fw | series = RUT2XX}} and earlier) user manual page.</i>|}}
__TOC__
__TOC__
==Summary==
==Summary==


The <b>Data to Server</b> feature provides you with the possibility to set up data senders that collect data from various sources and periodically send it to remote servers.
The <b>Data to Server</b> feature provides you with the possibility to set up data senders that collect data from various sources and periodically send it to remote servers.
{{#switch: {{{series}}}
{{#switch: {{{series}}} | RUTX | RUTM | RUTC | TCR1 | TRB1 | TRB2 | TRB2M | TRB5 | RUT2M | RUT2 | RUT30X | RUT36X | RUT9 | RUT9M | RUT14X | TAP100 | TAP200 = | #default =  
| RUTX =
<u><b>Note:</b> On {{{name}}}, Data to Server is additional software that can be installed from the <b>System → [[{{{name}}} Package Manager|Package Manager]]</b> page.</u>}}
| RUTM =
| TRB1 =
| TRB2 =
| RUT9|RUT9M =
| #default =  
<u><b>
 
Note:</b> On {{{name}}}, Data to Server is additional software that can be installed from the <b>System → [[{{{name}}} Package Manager|Package Manager]]</b> page.
 
</u>}}
{{Template:Networking_rutos_manual_basic_advanced_webui_disclaimer
| series = {{{series}}}
}}


==Data Senders==
==Data Senders==


A <b>Data Sender</b> is an instance that gathers and periodically sends collected data to a specified server. The Data Senders list is empty by default so, in order to begin configuration you must add a new data sender first. To add a new data sender, click the 'Add' button.
A <b>Data Sender</b> is an instance that gathers and periodically sends collected data to a specified server. The Data Senders list is empty by default so, in order to begin configuration you must add a new collection first. To add a new collection, click the 'Add' button.


[[File:Networking_rutos_manual_data_to_server_data_senders_add_button.png|border|class=tlt-border]]
[[File:Networking_rutos_manual_data_to_server_data_senders_add_button_v4.png|border|class=tlt-border]]


After this you should be redirected to the newly added data sender's configuration page.
After this you should be redirected to the newly added data configuration page.


===Advanced Sender Settings===
===Data configuration===
----
----
Refer to the table below for descriptions on data sender configuration fields.
Refer to the table below for descriptions on data configuration fields.


<b>Note</b>: these tables have coloring schemes to indicate which fields can be seen with different configuration.
<b>Note</b>: these tables have coloring schemes to indicate which fields can be seen with different configuration.


[[File:Networking_rutos_manual_data_to_server_advanced_sender_settings_v2.png|border|class=tlt-border]]
[[File:Networking rutos manual data to server data configuration_v1.png|border|class=tlt-border]]
 
====General====


<table class="nd-mantable">
<table class="nd-mantable">
Line 53: Line 40:
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Enabled</td>
       <td>Name</td>
       <td>off | on; default: <b>off</b></td>
       <td>string; default: <b>input1</b></td>
       <td>Turns the data sender on or off.</td>
      <td>Name of data input.</td>
    </tr>
    <tr>
      <td>Type</td>
      <td><span>Base {{!}} {{#ifeq:{{{bluetooth}}}|1|<span style="color:green">Bluetooth</span> {{!}}|}} {{#ifeq:{{{mobile}}}|1| GSM {{!}}|}} {{#ifeq:{{{impulse_counter}}}|1|<span style="color:coral">Impulse counter</span> {{!}}|}} <span style="color:olive">Lua script</span> {{!}} {{#ifeq:{{{m-bus}}}|1|<span style="color:midnightblue ">M-Bus</span>{{!}}|}} {{#ifeq:{{{mobile_usage}}}|1|<span style="color:blue">Mobile usage</span>{{!}}|}} {{#ifeq:{{{MNF}}}|1| MNF info {{!}}|}} {{#ifeq:{{{Modbus}}}|1|<span style="color:red">Modbus</span><span class="asterisk">*</span> {{!}} <span style="color:grey">Modbus Alarms</span> {{!}}|}} {{#ifeq:{{{wifi}}}|1|<span style="color:purple">Wifi scanner</span><span class="asterisk">*</span> {{!}}|}} {{#ifeq:{{{DNP3}}}|1|<span style="color:brown">DNP3</span><span class="asterisk">*</span> {{!}}|}} {{#ifeq:{{{MQTT}}}|1|<span style="color:orange">MQTT</span> {{!}}|}} {{#ifeq:{{{OPC}}}|1|<span style="color:lightblue">OPC UA</span><span class="asterisk">*</span> {{!}}|}} {{#ifeq:{{{gps}}}|1|<span style="color:Black">GPS</span> {{!}}|}} {{#ifeq:{{{DLMS}}}|1|<span style="color:hotpink">DLMS</span><span class="asterisk">*</span>|}} {{#ifeq:{{{io}}}|1|{{!}} <span style="color:slateblue">Input/Output</span>|}}; default: <b>Base</b></span></td>
      <td>Data input type.</td>
    </tr>
    <tr>
      <td>Format type</td>
      <td>Json {{!}} <span style="color:limegreen">Custom</span> {{!}} <span style="color:cadetblue">Lua script</span> (Some data input types may not work correctly with the provided Lua format example script. Review and adapt the script as needed to ensure compatibility.); default: <b>Json</b></td>
        <td>Arranges the format of the sent JSON segment.</td>
    </tr>
    <tr>
      <td>Values</td>
       <td>list; default: <b>All values included</b></td>
        <td>Select values based on the data input type. If no values are selected, all values will be included.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Name</td>
       <td><span style="color:limegreen">Format string</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
      <td>Name of the data sender. Used for easier data senders management purposes only (optional).</td>
        <td>Specifies custom format string.</td>  
     </tr>  
     </tr>
     <tr>
     <tr>
       <td>Data source</td>
       <td><span style="color:limegreen">Empty value</span></td>
      <td><span style="color:red">Modbus data</span>{{#ifeq:{{{series}}}|RUT36X|<span class="asterisk">*</span>|}}{{#ifeq:{{{series}}}|RUT30X|<span class="asterisk">*</span>|}} {{#ifeq:{{{bluetooth}}}|1|<nowiki>|</nowiki> <span style="color:green">Bluetooth data</span> |}} {{#ifeq:{{{wifi}}}|1|<nowiki>|</nowiki> WiFi scanner data{{#ifeq: {{{series}}} | RUTX | | <span class="asterisk">*</span>}}|}} | <span style="color:magenta">DNP3</span><span class="asterisk">*</span> {{!}} DNP3 data flash<span class="asterisk">*</span>; default: <b>Modbus data</b></td>
      <td>string; default: <b>N/A</b></td>
      <td>Source of the data to be sent to server.</td>
        <td>A string which will be placed if any value cannot be received.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Protocol</td>
       <td><span style="color:limegreen">Delimeter</span></td>
       <td>HTTP(S) | MQTT{{#ifeq: {{{series}}} | RUTX || <span class="asterisk">*</span>}} | Kinesis; default: <b>HTTP(S)</b></td>
       <td>string (Maximum length of value is 1 bytes); default: <b>N/A</b></td>
      <td>Protocol used for sending the data to server.</td>
        <td>Specifies delimiters for multiple data segments.</td>
    </tr> 
    <tr>
      <td><span style="color:cadetblue">Lua format example script</span></td>
      <td>-(interactive button)</td>
        <td>Download the Lua script.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
       <td>JSON format</td>
       <td><span style="color:cadetblue">Lua format script</span></td>
       <td>string; default: </b>{"TS": "%t", "D": "%d", "data": %a}</b></td>
       <td>-(interactive button)</td>
         <td>Arranges the format of the sent JSON segment.</td>  
         <td>Upload the Lua script.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Segment count</td>
       <td>Segment count</td>
       <td>integer [1..10]; default: <b>1</b></td>
       <td>integer [1..64]; default: <b>1</b></td>
       <td>Max segment count in one JSON string sent to server.</td>
       <td>Max segment count in one JSON string sent to server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Send as object</td>
       <td>Send as object</td>
       <td>off | on; default: <b>off</b></td>
       <td>off {{!}} on; default: <b>off</b></td>
       <td>When turned on, sends JSON segment as object and not as an array element.</td>
       <td>When turned on, sends JSON segment as object and not as an array element.
            <ul>
                <li><b>Object syntax</b> -->  {input1:{}...}</li>
                <li><b>JSON Array of Objects syntax</b> -->  {input1:<b>[</b>{},{}...<b>]</b>}</li>
            </ul>
        </td>
    </tr>
    {{#ifeq:{{{Modbus}}}|1|
    <tr>
      <td><span style="color:grey">Data filtering</span></td>
      <td>All {{!}} <span style="color:grey">Server ID</span> {{!}} <span style="color:grey">Alarm ID</span> {{!}} <span style="color:grey">Register number</span>; default: <b>All</b></td>
      <td>If Data type: <span style="color:grey">Modbus alarms data</span>. Choose which data this sender will send to server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>URL/Host/Connection string</td>
       <td><span style="color:red">Data filtering </span></td>
       <td>string; default: <b>none</b></td>
      <td>All {{!}} <span style="color:red">Server IP address</span> {{!}} <span style="color:red">Server ID</span> {{!}} <span style="color:red">Request name</span> ; default: <b>All</b></td>
       <td>URL for HTTP(S); Host for MQTT; Connection string for Azure MQTT.</td>
       <td>If Data type: <span style="color:red">Modbus data</span>. Choose which data this sender will send to server. <b>Note:</b> 20 filtering entries with Modbus data are allowed.</td>
    </tr>|}}
    {{#ifeq:{{{m-bus}}}|1|
    <tr>
      <td><span style="color:midnightblue">Data filtering</span></td>
      <td>All {{!}} Name; default: <b>All</b></td>
       <td>If Data type: <span style="color:midnightblue">M-Bus</span>. Choose which data this sender will send to server.</td>
     </tr>
     </tr>
    |}}
     <tr>
     <tr>
       <td>Period</td>
       <td><span style="color:olive">Lua data example script</span></td>
       <td>integer [1..86400]; default: <b>60</b></td>
       <td>-(interactive button)</td>
       <td>Data sending frequency (in seconds).</td>
       <td>Download Lua data example script.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:red">Data filtering</span></td>
       <td><span style="color:olive">Lua script</span></td>
       <td>All data | <span style="color:darkred">By slave ID</span> | <span style="color:blue">By slave IP</span>; default: <b>All data</b></td>
       <td>-(interactive button)</td>
       <td>If Data source: <span style="color:red">Modbus data</span>. Choose which data this sender will send to server.</td>
      <td>Upload Lua data script.</td>
    </tr> 
    {{#ifeq:{{{io}}}|1|
    <tr>
      <td><span style="color:slateblue">I/O pin</span></td>
      <td>PIN list; default: <b>depends on the device</b></td>
      <td>I/O pin name.</td>
    </tr>|}}
    {{#ifeq:{{{impulse_counter}}}|1|
    <tr>
      <td><span style="color:coral">Data filtering</span></td>
      <td>All {{!}} Pin Name; default: <b>All</b></td>
       <td>If Data type: <span style="color:coral">Impulse counter</span>. Choose which data this sender will send to server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:darkred">By slave ID:</span> Slave ID</td>
       <td><span style="color:coral">Data filtering: Impulse counter pin</span></td>
       <td>integer [1..255]; default: <b>none</b></td>
       <td>list; default: <b>none</b></td>
       <td>ID of the Modbus slave whose collected data will be sent to server.</td>
       <td>Filter data by defined impulse counter pin.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:blue">By slave IP:</span> Slave IP</td>
       <td><span style="color:coral">Data filtering: Invert filter</span></td>
       <td>ip; default: <b>none</b></td>
       <td>off {{!}} on; default: <b>off</b></td>
       <td>IP address of the Modbus slave whose collected data will be sent to server (for Modbus TCP slaves).</td>
       <td>Inverts filter condition.</td>
     </tr>{{#ifeq:{{{bluetooth}}}|1|
     </tr>|}}
    {{#ifeq:{{{bluetooth}}}|1|
     <tr>
     <tr>
       <td><span style="color:green">Data filtering</span></td>
       <td><span style="color:green">Data filtering</span></td>
       <td>All data <nowiki>|</nowiki> <span style="color:darkred">By MAC address</span> <nowiki>|</nowiki> <span style="color:blue">By device name</span>; default: <b>All data</b></td>
       <td>All {{!}} <span style="color:green">Device MAC address</span> {{!}} <span style="color:green">Device name</span>; default: <b>All</b></td>
       <td>If Data source: <span style="color:green">Bluetooth data</span>. Choose which data this sender will send to server.</td>
      <td>If Data type: <span style="color:green">Bluetooth</span>. Choose which data this sender will send to server.</td>
    </tr>|}}
    {{#ifeq:{{{wifi}}}|1|
    <tr>
      <td><span style="color:purple">Data filtering</span></td>
      <td>All {{!}} <span style="color:purple">Name</span> {{!}} <span style="color:purple">MAC address</span> {{!}} <span style="color:purple">Signal strength</span>; default: <b>All</b></td>
      <td>If Data type: <span style="color:purple">Wifi scanner</span>. Choose which data this sender will send to server.</td>
    </tr>|}}
    {{#ifeq:{{{mobile}}}|1|
    <tr>
      <td><span style="color:blue">Data period</span></td>
      <td>Day {{!}} Week {{!}} Month; default: <b>Day</b></td>
      <td>Choose for which time period to send info from.</td>
    </tr>
    <tr>
      <td><span style="color:blue">Current</span></td>
      <td>off {{!}} on; default: <b>off</b></td>
      <td>Current data.</td>
    </tr>
    <tr>
      <td><span style="color:blue">SIM card</span></td>
      <td>Select SIM card if device supports multiple SIM cards; default: <b>none</b></td>
      <td></td>
    </tr>|}}
    {{#ifeq: {{{DLMS}}}|1|
    <tr>
      <td><span style="color:hotpink">Data filtering</span></td>
      <td>All {{!}} <span style="color:hotpink">Name</span>; default: <b>All</b></td>
       <td>If Data type: <span style="color:hotpink">DLMS</span>. Choose which data this sender will send to server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:darkred">By MAC address:</span> MAC address</td>
       <td><span style="color:hotpink">Invert filter</span></td>
       <td>mac; default: <b>none</b></td>
      <td><span style="color:hotpink">off</span> {{!}} <span style="color:hotpink">on</span>; default: <b>off</b></td>
      <td>MAC address of bluetooth device whose collected data will be sent to server.</td>
       <td>If Data type: <span style="color:hotpink">DLMS</span>. Inverts filter condition.</td>
    </tr>|}}
    {{#ifeq: {{{DNP3}}}|1|
    <tr>
      <td><span style="color:brown">Data filtering</span></td>
      <td>All {{!}} <span style="color:brown"> Address </span> {{!}} <span style="color:brown">IP</span>; default: <b>All</b></td>
        <td>If Data type: <span style="color:brown">DNP3</span>. Choose which data this sender will send to server.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:blue">By device name:</span> Device name</td>
       <td><span style="color:brown">Database</span></td>
       <td>string; default: <b>none</b></td>
      <td>RAM {{!}} Flash; default: <b>RAM</b></td>
      <td>Device name of bluetooth device whose collected data will be sent to server.</td>
        <td>Database location</td>
    </tr>|}}
    {{#ifeq:{{{OPC}}}|1|
    <tr>
      <td><span style="color:lightblue">Data filtering</span></td>
       <td>All {{!}} <span style="color:lightblue"> Name </span>; default: <b>All</b></td>
        <td>If Data type: <span style="color:lightblue">OPC UA</span>. Choose which data this sender will send to server.</td>  
     </tr>|}}
     </tr>|}}
    {{#ifeq:{{{MQTT}}}|1|<tr>
        <td><span style="color:orange">Server address</span></td>
        <td>Default: <b>empty</b></td>
        <td>Hostname or ip address of the broker to connect to.</td>
    </tr>
     <tr>
     <tr>
      <td><span style="color:magenta">Data filtering</span></td>
        <td><span style="color:orange">Port</span></td>
      <td>All data <nowiki>|</nowiki> <span style="color:darkred">DNP3 Address</span> <nowiki>|</nowiki> <span style="color:blue">DNP3 IP</span>; default: <b>All data</b></td>
        <td>integer [0..65535]; default: <b>1883</b></td>
      <td>If Data source: <span style="color:magenta">DNP3</span>. Choose which data this sender will send to server.</td>
        <td>Port number for connecting to MQTT.</td>
     </tr>
     </tr>
     <tr>
     <tr>
      <td><span style="color:darkred">DNP3 Address:</span> DNP3 Address</td>
        <td><span style="color:orange">Keepalive</span></td>
      <td>integer [0..65519]; default: <b>none</b></td>
        <td>integer [1..640]; default: <b>60</b></td>
      <td>DNP3 address of device whose collected data will be sent to server.</td>
        <td>MQTT Keepalive period in seconds.</td>
     </tr>
     </tr>
     <tr>
     <tr>
      <td><span style="color:blue">DNP3 IP:</span> DNP3 IP</td>
        <td><span style="color:orange">Topic</span></td>
      <td>ip | domain; default: <b>none</b></td>
        <td>string; default: <b>none</b></td>
      <td>IP address of DNP3 device whose collected data will be sent to server.</td>
        <td>MQTT topic to be used for publishing the data.</td>
     </tr>
     </tr>
     <tr>
     <tr>
      <td>Retry on fail</td>
        <td><span style="color:orange">Client ID</span></td>
      <td>off | on; default: <b>off</b></td>
        <td>string; default: <b>none</b></td>
      <td>When turned on, the data sender retries failed sending attempts until the are successfully delivered.</td>
        <td>Client ID to send with the data. If empty, a random client ID will be generated</td>
     </tr>
     </tr>
    <tr>
        <td><span style="color:orange">QoS</span></td>
        <td>integer [0..2]; default: <b>0</b></td>
        <td>MQTT Quality of Service. Allowed values:
* 0 - when we prefer that the message will not arrive at all rather than arrive twice,
* 1 - when we want the message to arrive at least once but don't care if it arrives twice (or more),
* 2 - when we want the message to arrive exactly once. A higher QoS value means a slower transfer.</td>
    </tr>
        <tr>
      <td><span style="color:orange">Enable secure connection</span></td>
      <td>off {{!}} <span style="color:blue">on</span>; default: '''off'''</td>
      <td>Enables the use of TLS certificates.</td>
    </tr>
    <tr>
      <td><span style="color:blue">On:</span> <span style="color:orange">TLS type</span></td>
      <td>Certificate based {{!}} Pre-shared key based; default: '''Certificate based'''</td>
      <td>Select type of TLS.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Certificate based: Allow insecure connection</span></td>
      <td>off {{!}} on; default: '''off'''</td>
      <td>Allow not verifying server authentication.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Certificate based: Certificate files from device</span></td>
      <td>off {{!}} on; default: '''off'''</td>
      <td>Specify where the certificates will be used from.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Certificate based: Certificate authority file</span></td>
      <td>.ca file; default: <b>none</b></td>
      <td>'''Certificate authority''' is an entity that issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate.</td>
    </tr>
    <tr>
    <td><span style="color:orange">Certificate based: Client certificate</span></td>
        <td>.crt file; default: <b>none</b></td>
        <td>Certificate file is a type of digital certificate that is used by client systems to make authenticated requests to a remote server. If client certificate is not needed, leave both client certificate and client key fields empty.</td>
    </tr>
    <tr>
    <td><span style="color:orange">Certificate based: Client private keyfile</span></td>
        <td>.key file; default: <b>none</b></td>
        <td>File containing private key for this client. This file needs to be not encrypted.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Pre-shared key based: Pre-Shared-Key</span></td>
      <td>string; default: <b>none</b></td>
      <td>The pre-shared-key in hex format with no leading "0x".</td>
    </tr>
    <tr>
      <td><span style="color:orange">Pre-shared key based: Identity</span></td>
      <td>string; default: <b>none</b></td>
      <td>The identity of this client. May be used as the username depending on the server settings.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Username</span></td>
      <td>string; default: <b>none</b></td>
      <td>Username used in authentication.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Require password</span></td>
      <td>on {{!}} off; default: <b>off</b></td>
      <td>Enables password for authentication.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Password</span></td>
      <td>string; default: <b>none</b></td>
      <td>Password used in authentication.</td>
    </tr>}}
</table>
</table>
<br>
<br>
<span class="asterisk">*</span> This is additional software that can be installed from the <b>System → [[{{{name}}} Package Manager|Package Manager]]</b> page.


<span class="asterisk">*</span> This is additional software that can be installed from the <b>System → [[{{{name}}} Package Manager|Package Manager]]</b> page.
===Collection configuration===
====Protocol HTTP(S)====
----
 
[[File:Networking rutos manual data to server collection configuration_v2.png|border|class=tlt-border]]


<table class="nd-mantable">
<table class="nd-mantable">
Line 160: Line 314:
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Custom Header</td>
       <td>Enabled</td>
      <td>off {{!}} on; default: <b>on</b></td>
      <td>Enables data to server collection instance.</td>
    </tr>
    <tr>
      <td>Timer</td>
      <td><span style="color:blue">Period</span> {{!}} <span style="color:orange">Scheduler</span> {{!}} None; default: <b>Period</b></td>
      <td>Strategy for collecting/sending data to destination.</td>
    </tr>
    <tr>
      <td><span style="color:blue">Period</span></td>
      <td>integer; default: <b>60</b></td>
      <td>Interval in seconds for collecting/sending data to destination.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Day time</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>Allows to add custom headers to the HTTP requests.</td>
      <td>Day time when action should be executed. Use '*' to indicate every hour or minute, (e.g., 12:15, *:15, 12:*, or *:*).</td>
    </tr>
    <tr>
      <td><span style="color:orange">Interval type</span></td>
      <td>Weekdays {{!}} Month days; default: <b>Weekdays</b></td>
       <td>Allows selecting between week and month days for instance intervals.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Weekdays</span></td>
      <td>list; default: <b>Every day is selected</b></td>
      <td>Weekdays, when data should be sent/collected. If nothing is selected, every day of the week will be included.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Month day</span></td>
      <td>list; default: <b>Every day is selected</b></td>
      <td>Month days, when data should be sent/collected. If nothing is selected, every day of the month will be included.</td>
    </tr>
    <tr>
      <td><span style="color:orange">Month day: Force last day</span></td>
      <td>off {{!}} on; default: <b>off</b></td>
      <td>Forces intervals to accept last day of month as valid option if selected day doesn't exist in ongoing month.</td>
    </tr> 
    <tr>
      <td>Retry</td>
      <td>off {{!}} <span style="color:olive">on</span>; default: <b>off</b></td>
      <td>In case of a failed attempt, retry to send the same data to destination later.</td>
    </tr>
    <tr>
      <td><span style="color:olive">Retry count</span></td>
      <td>Default: <b>10</b></td>
      <td>Retry to send the same data N times </td>
    </tr>
    <tr>
      <td><span style="color:olive">Timeout</span></td>
      <td>Default: <b>1</b></td>
      <td>Timeout in second between retry attempts</td>
    </tr>
    <tr>
      <td>Format type</td>
      <td>JSON {{!}} <span style="color:red">custom</span> {{!}} <span style="color:lightgreen">Lua script</span>; default: <b>JSON</b></td>
      <td>Data collection objects formatting.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Use TLS</td>
       <td><span style="color:red">Format string</span></td>
      <td>off | <span style="color:red">on</span>; default: '''off'''</td>
      <td>Default: <b>Instance name</b></td>
       <td>Enables the use of TLS certificates.</td>
       <td>Specifies custom format string</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:red">On:</span> TLS type</td>
       <td><span style="color:red">Empty value </span></td>
       <td>Certificate based; default: '''Certificate based'''</td>
       <td>Default: <b>N/A</b></td>
       <td>Select type of TLS.</td>
       <td>A string which will be placed if any value cannot be received</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:red">On:</span> CA File</td>
       <td><span style="color:lightgreen">Lua format example script</span></td>
       <td>.ca file; default: <b>none</b></td>
       <td>-(interactive button)</td>
      <td>'''Certificate authority''' is an entity that issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate.</td>
        <td>Download the Lua script.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
    <td><span style="color:red">On:</span> Client Certificate</td>
      <td><span style="color:lightgreen">Lua format script</span></td>
        <td>.crt file; default: <b>none</b></td>
      <td>-(interactive button)</td>
         <td>Certificate file is a type of digital certificate that is used by client systems to make authenticated requests to a remote server. If client certificate is not needed, leave both client certificate and client key fields empty.</td>
         <td>Upload the Lua script.</td>  
     </tr>
     </tr>
     <tr>
     <tr>
    <td><span style="color:red">On:</span> Private Key</td>
      <td>Encoder</td>
        <td>.key file; default: <b>none</b></td>
      <td>None {{!}} Base64; default: <b>None</b></td>
         <td>File containing private key for this client. This file needs to be not encrypted.</td>
         <td>Encoder used for all sent data.</td>  
     </tr>
     </tr>
</table>
</table>
<br>
 
====Protocol MQTT====
===Server configuration===
----
 
[[File:Networking rutos manual data to server server configuration.png|border|class=tlt-border]]
 
<b>Note:</b> on some devices it is necessary to install an additional package to see additional server types [[{{{name}}}_Package_Downloads|Advanced data to server modules]].


<table class="nd-mantable">
<table class="nd-mantable">
Line 198: Line 412:
       <th>Value</th>
       <th>Value</th>
       <th>Description</th>
       <th>Description</th>
    </tr> 
    <tr>
      <td>Type</td>
      <td>HTTP {{#ifeq:{{{MQTT}}}|1|{{!}} <span style="color:red">MQTT</span>|}} {{!}} <span style="color:olive">Azure IoT Hub</span> (requires to install package from [[{{{name}}} Package Manager|Package Manager]]) {{!}} <span style="color:brown">Lua</span> {{!}} <span style="color:coral">SMTP</span> {{!}} <span style="color:DarkMagenta">Socket</span> {{!}} <span style="color:DarkSeaGreen">FTP</span> {{#ifeq:{{{mobile}}}|1|{{!}} <span style="color:GoldenRod">SMS</span>|}}; default: <b>HTTP</b></td>
      <td>Interval in seconds for collecting/sending data to destination.</td>
     </tr>
     </tr>
    <tr>
      <td>Server address</td>
      <td>Default: <b>empty</b></td>
      <td>Hostname or IP address of the broker to connect to.</td>
    </tr>
    <tr>
      <td>HTTP headers</td>
      <td>Default: <b>empty</b></td>
      <td>Allows to add custom headers to the HTTP requests.</td>
    </tr>
    <tr>
      <td>Enable secure connection</td>
      <td>off {{!}} <span style="color:blue">on</span>; default: <b>off</b></td>
      <td>Enables the use of TLS certificates.</td>
    </tr>
    {{#ifeq:{{{MQTT}}}|1|
     <tr>
     <tr>
         <td>Port</td>
         <td><span style="color:red">Port</span></td>
         <td>integer [0..65535]; default: <b>1883</b></td>
         <td>integer [0..65535]; default: <b>1883</b></td>
         <td>Port number for connecting to MQTT.</td>
         <td>Port number for connecting to MQTT.</td>
     </tr>
     </tr>
     <tr>
     <tr>
         <td>Keepalive</td>
         <td><span style="color:red">Keepalive</span></td>
         <td>integer [1..640]; default: <b>60</b></td>
         <td>integer [1..640]; default: <b>60</b></td>
         <td>MQTT Keepalive period in seconds.</td>
         <td>MQTT Keepalive period in seconds.</td>
     </tr>
     </tr>
     <tr>
     <tr>
         <td>Topic</td>
         <td><span style="color:red">Topic</span></td>
         <td>string; default: <b>none</b></td>
         <td>string; default: <b>none</b></td>
         <td>MQTT topic to be used for publishing the data.</td>
         <td>MQTT topic to be used for publishing the data.</td>
     </tr>
     </tr>
     <tr>
     <tr>
         <td>Client ID</td>
         <td><span style="color:red">Client ID</span></td>
         <td>string; default: <b>none</b></td>
         <td>string; default: <b>none</b></td>
         <td>Client ID to send with the data. If empty, a random client ID will be generated</td>
         <td>Client ID to send with the data. If empty, a random client ID will be generated</td>
     </tr>
     </tr>
     <tr>
     <tr>
         <td>QoS</td>
         <td><span style="color:red">QoS</span></td>
         <td>integer [0..2]; default: <b>0</b></td>
         <td>integer [0..2]; default: <b>0</b></td>
         <td>MQTT Quality of Service. Allowed values:
         <td>MQTT Quality of Service. Allowed values:
Line 226: Line 461:
* 1 - when we want the message to arrive at least once but don't care if it arrives twice (or more),
* 1 - when we want the message to arrive at least once but don't care if it arrives twice (or more),
* 2 - when we want the message to arrive exactly once. A higher QoS value means a slower transfer.</td>
* 2 - when we want the message to arrive exactly once. A higher QoS value means a slower transfer.</td>
    </tr>|}}{{#ifeq:{{{MQTT}}}|1|
    <tr>
      <td><span style="color:red">TLS type</span></td>
      <td>Certificate based {{!}} <span style="color:teal">Pre-Shared-Key based</span>; default: '''Certificate based'''</td>
      <td>Choose TLS type.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Use TLS</td>
       <td><span style="color:teal">Pre-Shared-Key</span></td>
       <td>off | <span style="color:red">on</span>; default: '''off'''</td>
       <td>hexadecimal string; default: '''none'''</td>
       <td>Enables the use of TLS certificates.</td>
      <td>The pre-shared-key in hex format with no leading “0x”.</td>
    </tr>
    <tr>
      <td><span style="color:teal">Identity</span></td>
      <td>string; default: '''none'''</td>
       <td>The identity of this client.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:red">On:</span> TLS type</td>
       <td><span style="color:red">Allow insecure connection</span></td>
       <td><span style="color:chocolate">Certificate based</span> {{!}} <span style="color:darkred">Pre-shared key based</span>; default: '''Certificate based'''</td>
       <td>off {{!}} on; default: '''off'''</td>
       <td>Select type of TLS.</td>
      <td>Allow not verifying server authentication.</td>
    </tr>|}}
    <tr>
      <td><span style="color:blue">Certificate files from device</span></td>
      <td>off {{!}} on; default: '''off'''</td>
       <td>Specify where the certificates will be used from.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:chocolate">Certificate based:</span> CA File</td>
       <td><span style="color:blue">Certificate authority file</span></td>
       <td>.ca file; default: <b>none</b></td>
       <td>.ca file; default: <b>none</b></td>
       <td>'''Certificate authority''' is an entity that issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate.</td>
       <td>'''Certificate authority''' is an entity that issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate.</td>
     </tr>
     </tr>
     <tr>
     <tr>
     <td><span style="color:chocolate">Certificate based:</span> Client Certificate</td>
     <td><span style="color:blue">Client certificate</span></td>
         <td>.crt file; default: <b>none</b></td>
         <td>.crt file; default: <b>none</b></td>
         <td>Certificate file is a type of digital certificate that is used by client systems to make authenticated requests to a remote server. If client certificate is not needed, leave both client certificate and client key fields empty.</td>
         <td>Certificate file is a type of digital certificate that is used by client systems to make authenticated requests to a remote server. If client certificate is not needed, leave both client certificate and client key fields empty.</td>
     </tr>
     </tr>
     <tr>
     <tr>
     <td><span style="color:chocolate">Certificate based:</span> Private Key</td>
     <td><span style="color:blue">Client private keyfile</span></td>
         <td>.key file; default: <b>none</b></td>
         <td>.key file; default: <b>none</b></td>
         <td>File containing private key for this client. This file needs to be not encrypted.</td>
         <td>File containing private key for this client. This file needs to be not encrypted.</td>
    </tr>{{#ifeq:{{{MQTT}}}|1|
    <tr>
      <td><span style="color:red">Use credentials</span></td>
      <td>off {{!}} <span style="color:darkgreen">on</span>; default: '''off'''</td>
      <td>Enables use of username and password for authentication.</td>
    </tr>
    <tr>
      <td><span style="color:darkgreen">On:</span> Username</td>
      <td>string; default: <b>none</b></td>
      <td>Username used in authentication.</td>
    </tr>
    <tr>
      <td><span style="color:darkgreen">On:</span> Password</td>
      <td>string; default: <b>none</b></td>
      <td>Password used in authentication.</td>
    </tr>|}}
   
    <tr>
      <td><span style="color:olive">Configuration type</span></td>
      <td>Unique Azure Iot Hub configuration {{!}} Existing Azure Iot Hub configuration; default: <b>Unique Azure Iot Hub configuration</b></td>
      <td></td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:darkred">Pre-shared key based:</span> Pre-Shared-Key</td>
       <td><span style="color:olive">Configuration type</span></td>
      <td>Unique Azure Iot Hub configuration {{!}} Existing Azure Iot Hub configuration; default: <b>Unique Azure Iot Hub configuration</b></td>
      <td></td>
    </tr>
    <tr>
      <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> Connection type</td>
      <td><span style="color:blue">Shared Access Signature (SAS) key</span> {{!}} <span style="color:red">Device Provisioning Service (DPS)</span>; default: <b>Shared Access Signature (SAS) key</b></td>
      <td></td>
    </tr>
    <tr>
      <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:blue">Connection String</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>The pre-shared-key in hex format with no leading "0x".</td>
       <td>Connection string based on primary key used in API calls which allows device to communicate with IoT Hub.</td>
    </tr>
    <tr>
      <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">ID Scope</span></td>
      <td>string; default: <b>none</b></td>
      <td>Unique identifier that is assigned to an Azure IoT Hub during its creation and is used to uniquely identify the specific provisioning service the device will register through.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:darkred">Pre-shared key based:</span> Identity</td>
       <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">Registration ID</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>The identity of this client. May be used as the username depending on the server settings.</td>
       <td>The registration ID is used to uniquely identify a device registration with the Device Provisioning Service. Registration ID is the X.509 certificate common name (CN) field of the individual device's certificate.</td>
    </tr>
    <tr>
      <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">Global Device Endpoint</span></td>
      <td>string; default: <b>global.azure-devices-provisioning.net</b></td>
      <td>Destination for messages sent by IoT devices to the Azure IoT Hub (will default to global.azure-devices-provisioning.net if not set).</td>
    </tr>
    <tr>
      <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">Attestation mechanism</span></td>
      <td>X.509 Certificates {{!}} Symmetric Key; default: <b>X.509 Certificates</b></td>
      <td>Method used to confirm a device's identity in Device Provisioning Service.</td>
    </tr>
        <tr>
      <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">X.509 Certificates: X.509 Certificate</span></td>
      <td>-(interactive) button; default: <b>none</b></td>
      <td>Upload the "leaf" certificate file.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Use Credentials</td>
       <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">X.509 Certificates: X.509 Private Key</span></td>
      <td>off | <span style="color:darkgreen">on</span>; default: '''off'''</td>
      <td>-(interactive) button; default: <b>none</b></td>
       <td>Enables use of username and password for authentication.</td>
       <td>Upload the "leaf" key file.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:darkgreen">On:</span> Username</td>
       <td><span style="color:olive">Unique Azure Iot Hub configuration:</span> <span style="color:red">Symmetric Key: Symmetric Key</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>Username used in authentication.</td>
       <td>The the derived device key from the DPS Primary Key.</td>
    </tr>
    <tr>
      <td><span style="color:brown">Lua data example script</span></td>
      <td>-(interractive button)</td>
      <td>Downloads an example of script.</td>
    </tr>
    <tr>
      <td><span style="color:brown">Lua script</span></td>
      <td>-(interractive button)</td>
      <td>Path to the lua script.</td>
    </tr>
    <tr>
      <td><span style="color:coral">Subject</span></td>
      <td>string; default:<b>none</b></td>
      <td>Subject of an email.</td>
    </tr>
    <tr>
      <td><span style="color:coral">Recipient's email address</span></td>
      <td>A valid email address is accepted; default: <b>none</b></td>
      <td>Subject of an email.</td>
    </tr> 
    <tr>
      <td><span style="color:coral">Email account</span></td>
      <td>list; default: <b>none</b></td>
      <td>Sender's email configuration. Configure email account [[{{{name}}}_Administration#Recipients | here]].</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:darkgreen">On:</span> Password</td>
       <td><span style="color:DarkMagenta">Server address</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>Password used in authentication.</td>
       <td>Socket's server address.</td>
    </tr>
    <tr>
      <td><span style="color:DarkMagenta">Server port</span></td>
      <td>integer [1..65535]; default: <b>none</b></td>
      <td>Socket's server port.</td>
    </tr>
    <tr>
      <td><span style="color:DarkMagenta">UDP</span></td>
      <td>off {{!}} on; default: <b>off</b></td>
      <td>Use UDP as the protocol.</td>
    </tr>
    <tr>
      <td><span style="color:DarkMagenta">Timeout</span></td>
      <td>integer; default: <b>10</b></td>
      <td>Specifies the receiving or sending data timeout.</td>
     </tr>
     </tr>
</table>
</br>
====Protocol Kinesis====
<table class="nd-mantable">
     <tr>
     <tr>
        <th>Field</th>
      <td><span style="color:DarkSeaGreen">The directory of the file</span></td>
       <th>Value</th>
       <td>path; default: <b>none</b></td>
       <th>Description</th>
       <td>Remote FTP directory to upload file to.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Stream name</td>
       <td><span style="color:DarkSeaGreen">Host</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>The name of the stream for which to start encrypting records.</td>
       <td>The domain name or IP address of the server.</td>
    </tr>
    <tr>
      <td><span style="color:DarkSeaGreen">Port</span></td>
      <td>integer [1..65535]; default: <b>21</b></td>
      <td>The TCP/IP port of the server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Partition key</td>
       <td><span style="color:DarkSeaGreen">Username</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>The partition key is used by Kinesis Data Streams as input to a hash function that maps the partitionkey and associated data to a specific shard.</td>
       <td>The username of the FTP server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>API version</td>
       <td><span style="color:DarkSeaGreen">Password</span></td>
       <td>positive integer; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>Optional. Used version of the Kinesis API.</td>
       <td>The password of the FTP server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Region</td>
       <td><span style="color:DarkSeaGreen">Extra prefix to file name</span></td>
       <td>string; default: <b>none</b></td>
       <td>string; default: <b>none</b></td>
       <td>Region code of the Kinesis server.</td>
       <td>Extra information to be added to file name.</td>
     </tr>
     </tr>
     <tr>
     <tr>
    <td>Domain</td>
      <td><span style="color:DarkSeaGreen">Buffer size</span></td>
        <td>domain; default: <b>none</b></td>
      <td>integer; default: <b>1024</b></td>
        <td>Domain of the Kinesis server. E.g. 'amazonaws.com'</td>
      <td>The size of the buffer to be used for uploading to FTP server.</td>
     </tr>
     </tr>
     <tr>
     <tr>
    <td>Access key</td>
      <td><span style="color:DarkSeaGreen">Overflow</span></td>
        <td>string; default: <b>none</b></td>
      <td>off {{!}} on; default: <b>on</b></td>
        <td>Access key ID is a part of Access keys used for authentication.</td>
      <td>Upload file to FTP server if buffer overflowed.</td>
    </tr>
    <tr>
      <td><span style="color:DarkSeaGreen">Mode</span></td>
      <td>Interval {{!}} Fixed; default: <b>Interval</b></td>
      <td>The schedule mode to be used for uploading to FTP server.</td>
    </tr>
    <tr>
      <td><span style="color:DarkSeaGreen">Interval: Interval</span></td>
      <td>integer; default: <b>10</b></td>
      <td>Upload files to server every x seconds.</td>
    </tr>
    <tr>
      <td><span style="color:DarkSeaGreen">Fixed: Minute</span></td>
      <td>minutes; default: <b>every minute</b></td>
      <td>Uploading will be performed on this specific minute only.</td>
     </tr>
     </tr>
     <tr>
     <tr>
    <td>Secret key</td>
      <td><span style="color:DarkSeaGreen">Fixed: Hour</span></td>
        <td>string; default: <b>none</b></td>
      <td>hours; default: <b>every minute</b></td>
        <td>Secret access key is a part of Access keys used for authentication.</td>
      <td>Uploading will be performed on this specific hour only.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td>Use TLS</td>
       <td><span style="color:DarkSeaGreen">Fixed: Day</span></td>
      <td>off | <span style="color:red">on</span>; default: '''off'''</td>
      <td>days; default: <b>every day</b></td>
       <td>Enables the use of TLS certificates.</td>
       <td>Uploading will be performed on this day only.</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:red">On:</span> TLS type</td>
       <td><span style="color:DarkSeaGreen">Directory traversing method</span></td>
       <td>Certificate based; default: '''Certificate based'''</td>
       <td>Multi CWD {{!}} No CWD {{!}} Single CWD; default: <b>Multi CWD</b></td>
       <td>Select type of TLS.</td>
       <td>Directory traversing method for FTP (multicwd, nocwd, cwd).</td>
     </tr>
     </tr>
     <tr>
     <tr>
       <td><span style="color:red">On:</span> CA File</td>
       <td><span style="color:GoldenRod">Recipients</span></td>
       <td>.ca file; default: <b>none</b></td>
       <td>Single {{!}} Group; default: <b>Single</b></td>
       <td>'''Certificate authority''' is an entity that issues digital certificates. A digital certificate certifies the ownership of a public key by the named subject of the certificate.</td>
       <td>You can choose to add a single number or use a phone group list.</td>
     </tr>
     </tr>
     <tr>
     <tr>
    <td><span style="color:red">On:</span> Client Certificate</td>
      <td><span style="color:GoldenRod">Single: Recipient's phone number</span></td>
        <td>.crt file; default: <b>none</b></td>
      <td>phone number; default: <b>none</b></td>
        <td>Certificate file is a type of digital certificate that is used by client systems to make authenticated requests to a remote server. If client certificate is not needed, leave both client certificate and client key fields empty.</td>
      <td>To whom the message will be sent. The number must be specified in full format, country code included. e.g., +37000000000.</td>
     </tr>
     </tr>
     <tr>
     <tr>
    <td><span style="color:red">On:</span> Private Key</td>
      <td><span style="color:GoldenRod">Group: Phone group</span></td>
        <td>.key file; default: <b>none</b></td>
      <td>list; default: <b>none</b></td>
        <td>File containing private key for this client. This file needs to be not encrypted.</td>
      <td>Recipient's phone number users group. Configure it [[{{{name}}}_Administration#Recipients | here]].</td>
     </tr>
     </tr>
</table>
</table>


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