State IO ESP32

by moin



This FW combines the functionality of OXRS-SHA-StateMonitor-ESP32 and OXRS-SHA-StateController-ESP32.

To perform this combined functionality the available number of 128x I/O lines is split into input and output partitions. The split can be configured at runtime.

How does it work?

The maximum number of 128x I/O lines can be achieved by connecting up to 8x I/O expander chips (MCP23017 with 16x I/Os each) via the I2C bus to the Rack32 controller. The FW refers to these I/O lines with index numbers (1 .. 128). In the standard configuration all 128x I/O lines are configured as input (StateMonitor) or output (StateController). This FW allows you to split the 128x I/O lines into a lower partition of inputs and an upper partition of outputs. With this configurations a single Rack32 controller can monitor inputs as well as control outputs which could be useful for small scale or distributed applications.

Currently there are 5 supported configurations, with different partition sizes.

The AdminUI-WEB-APPopen in new window is the ideal tool to set your desired configuration.

IO split configurations

In the example above the FW is configured for 32x inputs and 96x outputs. The user has to make sure that the connected MCPs are configured properly (correct MCP address). Not all output MCPs need to be populated. The FW will automatically scan for installed MCPs and only allows configuration of existing MCPs.


This FW is fully compatible with OXRSopen in new window eco-system and is built using the standard OXRS Libraries

All the functionality of the StateMonitor applies to the input partition and StateController functionality applies to the output partition. Please see their documentation for further details.


Download the latest version of the firmware on Githubopen in new window.

Supported Hardware

Input devices

Output devices

And is designed to run on the RACK32 as part of the OXRSopen in new window eco-system.



Copyright 2020-present SuperHouse Automation Pty Ltd

The software portion of this project is licensed under the Simplified BSD License. The "licence" folder within this project contains a copy of this license in plain text format.