IonoPi
Iono Pi is a versatile I/O module that combines several digital and analog input lines, power relay outputs and support for standard interfaces, typical of modern PLCs, with the powerful computing core of the Raspberry Pi.

This driver provides support for both a local installation of HSYCO on Iono Pi itself, or a remote Iono Pi unit connected via SSH. In both cases, the Raspberry Pi OS Kernel module for Iono Pi must be installed. The kernel module documentation is available at GitHub and the Iono Pi User Guide.
HSYCO Configuration
Add a IONO Pi I/O Server in the I/O Servers section of the Settings and set its parameters:
Note that the IONO Pi I/O Server doesn't count in the I/O servers license total, so you don't need an extra I/O Server license to use IONO Pi with HSYCO.
Communication
- IP Address: the IP address assigned to Iono Pi, leave blank for a local installation;
- Port: SSH port configured on Iono Pi (defaults to 22), leave blank for a local installation.
Authentication
- User: username to access the remote Iono Pi via SSH, leave blank for a local installation
- Password: password to access the remote Iono Pi via SSH, leave blank for a local installation.
High Availability
- Shutdown when inactive: defaults to false.
Options
| ID | Default | Values | Description |
|---|---|---|---|
| startupevents | true | true | generate IO events also during the driver’s start-up phase |
| false | start generating events only after HSYCO is aligned with the current status of the system | ||
| compatibilitymode | false | true | use the legacy datapoint naming scheme, maintaining compatibility with older HSYCO configurations (until version 3.9). See the Compatibility Mode section below for more details |
| false | use the new datapoint naming format following the Kernel Module file system | ||
| wiegandbits | false | true | the wiegand datapoints report bits count and data value |
| false | the wiegand datapoints report the data value only | ||
| pollinterval | 200 | <ms> | interval, in milliseconds, between subsequent readings of all values defined in the Kernel Module |
| analogminvariation | 100 | <mV> | minimum voltage variation (in millivolts) to be measured on analog inputs, after an event has been triggered, for a new one to occur. Defaults to 100 |
| digitalinputs | true | true | enable digital inputs monitoring |
| false | disable digital inputs monitoring | ||
| digitaldebounce | 30 | <ms> | time, in milliseconds, required for digital inputs to maintain a value, after a variation, before an event is triggered |
| wiegand1 | false | true | enable and monitor Wiegand interface 1 |
| false | disable Wiegand interface 1 | ||
| wiegand2 | false | true | enable and monitor Wiegand interface 2 |
| false | disable Wiegand interface 2 |
The pollinterval, analogminvariation, digitalinputs, digitaldebounce, wiegand1 and wiegand2 options only work on local installations.
Datapoints
Standard Mode
The Iono Pi implements all datapoints provided by the underlying Iono Pi kernel module. Refer to the documentation available at Iono Pi Kernel Module.
Each readable file name exposed by the kernel module under the /sys/devices/virtual/ionopi/ sub-directories appears as a data point with id <subdir>.<file>. For example, as the LED's status file is /sys/devices/virtual/ionopi/led/status, the corresponding data point is "led.status".
Command files that are marked as write only in the documentation (W), are not shown as visible data points in HSYCO, but can be used in the IO events action or ioSet() methods to send a command.
For example, if "ionopi" is the id assigned to the Iono Pi I/O Server, then:
TIME : IO ionopi.led.blink = 5000
will make the led stay on for 5 second (5000 ms).
Note that ionopi.led.blink is not visible in the Status Browser and doesn't generate events, because it is write only, and only the ionopi.led.status datapoint will be visible, with a value of 0 if the LED is off, or 1 if on.
Additional datapoints
| ID | Value | R/W | Description |
|---|---|---|---|
| connection | online | R | connection established |
| offline | R | HSYCO can't connect to the device | |
| clock | yyyy-mm-dd hh:mm:ss | R | the Iono clock current time |
| read | W | read the Iono clock, and the delta with HSYCO’s time | |
| sync | W | set the Iono clock to HSYCO’s current time | |
| clock.delta | integer number | R | the delta time in seconds between the Iono and HSYCO clocks. A positive number means that the Iono clock is ahead of HSYCO |
The clock and clock.delta datapoints are only available on remote installations.
Compatibility Mode
In Compatibility Mode, the driver exposes datapoints using the legacy naming scheme from earlier HSYCO Iono Pi driver versions. This ensures older installations continue to work without changes, preserving existing datapoint names, scripts, and event logic exactly as before.
Below is the list of datapoints available in Compatibility Mode:
| ID | Value | R/W | Description |
|---|---|---|---|
| led | 0 | R | LED L1 is off |
| W | turn LED L1 off | ||
| 1 | R | LED L1 is on | |
| W | turn LED L1 on | ||
| o<1-4> | 0 | R | relay <1-4> is off |
| W | switch off relay <1-4> | ||
| 1 | R | relay <1-4> is on | |
| W | switch on relay <1-4> | ||
| oc<1-3> | 0 | R | open collector output <1-3> is off (not grounded) |
| W | switch off open collector output <1-3> | ||
| 1 | R | open collector output <1-3> is on (grounded) | |
| W | switch on open collector output <1-3> | ||
| di<1-6> | 0 | R | digital input <1-6> is low |
| 1 | R | digital input <1-6> is high | |
| ai<1-4> | <val> | R | analog input <1-4> is reading a voltage equal to <val> (in Volts) |
| wiegand.<1-2> | <val> | R | if option "wiegandbits" set to false. Value as an unsigned integer in base 16 (hex) read on the specified Wiegand interface (e.g. "2c646a2") |
| <bits>/<val> | R | if option "wiegandbits" set to true. Number of bits and value (hex) read on the specified Wiegand interface (e.g. "26/2c646a2") | |
| onewire.bus.<id> | <val> | R | 1-Wire device <id> value |
| clock | read | W | read the Iono clock |
| <timestamp>.<timezone> | R | <timestamp> is Epoch time (in milliseconds), <timezone> is the time zone set on Iono Pi module (e.g. "Europe/Rome") | |
| <timestamp>.<timezone> | W | manually set date/time and time zone on Iono Pi module. <timestamp> is Epoch time (in milliseconds), <timezone> is the time zone you want to set (e.g. "Europe/Rome") | |
| <timestamp> | W | manually set date/time on Iono Pi module. <timestamp> is Epoch time (in milliseconds) |
Additional datapoints
| ID | Value | R/W | Description |
|---|---|---|---|
| connection | online | R | connection established |
| offline | R | HSYCO can't connect to the device | |
| driverstate | init | R | Driver is initializing |
| running | R | Driver is running (normal state) | |
| quit | R | Driver quit |
User Interface
To control a digital output (O1 ... O4, OC1 ... OC3, LED), add a button object to your project page and set its address field to the corresponding datapoint:

Release Notes
3.10.0
- now based on Iono Pi kernel module, with redesigned datapoints map
- "https" and "onewirebus" options removed
- "readinterval" renamed to "pollinterval"
- "compatibilitymode" option added
3.8.0
- new "clock" datapoint
3.7.0
- added support for iono pi driver v1.3.0 and "wiegandbits" option
- added support for local Iono Pi direct access
3.6.0
- initial release
Iono Pi is a registered trademark of Sfera Labs Srl