Tags: 
3rd party HW-SW

The AN87 demonstrates how to control and monitor NETIO smart power outputs through WyreStorm’s SYN-CTL-FL10 Control Processor

Do you have any questions?

The AN87 demonstrates how to control power outputs on NETIO PDUs from through WyreStorm Controler SYN-CTL-FL10. Controler is equipped with with a built-in Node-RED engine, used to integrate and automate the AV/IT systems in a room from a single WyreStorm keypad or touch panel (SYN-KEY12 and other SYN UI surfaces). Through NETIO's JSON API, NETIO PDUs can be integrated directly into a SYN-CTL-FL10 project, providing one-button power control and real-time power monitoring without any additional NETIO driver — Node-RED's standard HTTP Request and JSON nodes are enough.

  • No dedicated NETIO driver required: communication runs over LAN using NETIO's JSON API and Node-RED's built-in HTTP Request / JSON Parse nodes, both already part of the SYN-CTL-FL10 firmware.
  • Native keypad / touch panel control: SYN-KEY12 (or other WyreStorm UI) buttons switch any NETIO output ON or OFF directly.
  • Real relay feedback: button and status components reflect the PDU's actual output state, not just the last command sent.
  • Live energy dashboard: per-output and total power consumption (W) is read from the PDU and shown on the panel.
  • Fast UI refresh: an event-driven re-poll is triggered immediately after every control command (in addition to the regular polling interval), so the panel updates within a fraction of a second of a button press.
  • Scalable: additional outputs or additional NETIO PDUs can be added by duplicating the same flow pattern.

 

 

Supported devices:

NETIO devices

NETIO: all devices running with FW 5.2.4.+; there could be limitation observed by not using the latest FW

WyreStorm (HW)

SYN-CTL-FL10 control processor.

WyreStorm (SW)

Built-in Node-RED engine + the WyreStorm UI/page designer application used to build SYN-KEY12 pages.

Communication

JSON API over HTTP (REST)

Polling interval

Every 2 seconds (HTTP GET + command response)

 

 

Support functionallity:

  • Read out NETIO device details (model, IP address/ port, device name)
  • Monitor individual outlet status (ON / OFF)
  • Switch any outlet ON, OFF
  • Read energy consumption data on NETIO devices that support power metering (A, W, kWh, V, Hz, TPF)
  • Aggregate global electrical measurements across all outlets
  • Reset the energy counter remotely
  • Temperature monitoring using the NETIO T1 or TH1 sensors (where fitted)

Configuration - Configure the NETIO device

Enable the JSON API on the NETIO PDU so that Composer can communicate with it:

  • Open the NETIO web interface in a browser (default credentials: admin / admin).
  • Navigate to M2M API Protocols.
  • Select JSON API and check Enable JSON API.
  • Set the access mode to Read-Write. If both Read-Only and Read-Write are enabled, make sure you use the Read-Write credentials in the Intelligent Module.
  • Note the IP address, port (default 80), username, and password — you will need these in Composer.
  • Click Save Changes.

 

Example of JSON API config

 

Configure the WyreStorm SYN-CTL-FL10

The SYN-CTL-FL10 must have IP connectivity to the NETIO PDU (same LAN, or routed). In the reference setup both devices sit on the processor's LAN1 network.

1. Building the Node-RED flow

In Node-RED, add a flow (with two parts that share the PDU's JSON endpoint (netio.json):

  • Feedback / monitoring path — a user modified timed trigger ("Device Feedback Check Interval") fires an HTTP Request (GET) against the PDU, the JSON response is parsed and fanned out to function nodes that extract per-output and total power readings, and to a function node that maps each output's relay state to feedback tags used by the UI.
  • Control path — one input node per command (e.g. O1On, O1Off, O2On, O2Off, O3On, O3Off….) sets the matching msg.payload and feeds a shared HTTP Request (POST) node that sends the switch command to the PDU.

 

A NETIO JSON API switch command looks like this (POST to http://<PDU-IP>/netio.json):

  • {"Outputs":[{"ID":1,"Action":1}]} - Action 1 switches output 1 ON; Action 0 switches it OFF.
  • Full NETIO JSON API spec link

 

Add a short (~200 ms) trigger-delay between the control path and the feedback path so that right after a command is sent, the flow re-polls the PDU and refreshes the feedback/power tags immediately, instead of waiting for the next scheduled poll.

 

Example of Node Red Config

 

2. Building the control panel page (SYN-TP10-B)

In the WyreStorm Synergy Designer, add a page with the buttons and status readouts needed (in the reference project: a "PG1" page with paired On/Off buttons per load, plus per-output and total power consumption readouts, shown in the hero image above).

Bind each component to the Node-RED flow through its Component ID field in Button Properties, using the same identifiers as the corresponding Node-RED nodes — e.g. Component ID O1On for the button that should trigger the O1On input node.

 

Example of UI Control panel design

 

Special thanks

Let us thank especially to Zvonimir Prokic for the driver and integration development. We are exited to have such partner as WyreStorm

 

FAQs

Does the module support multiple NETIO devices?

Yes — duplicate the HTTP Request nodes (GET and POST) and the relay control/feedback nodes for each additional PDU, pointing at its own IP address and credentials. Each unit can live on its own Node-RED tab to keep the project organised.

How often does the panle refresh

On the schedule set in the "Device Feedback Check Interval" node, plus an immediate refresh roughly 200 ms after every control command, so the panel reflects a button press almost instantly rather than waiting for the next scheduled poll

Does this need a NETIO driver or license on WyreStorm side?

No. Only NETIO's built-in JSON API (enabled on the PDU) and Node-RED's standard HTTP Request / JSON nodes (built into the SYN-CTL-FL10) are used — there is no separate driver package to install or license.

 

 

Ask for a price or technical parameters

For device testing use name/password demo/demo