esphome / esphome/feature-requests

Support for Olimex i2c modules (MOD-IO and MOD-IO2)

Open
#3,195 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
450
Forks
29
PR merge metrics
No merged PRs in 30d

Description

**Describe the problem you have/What new integration you would like**

Hi,
I would like to request the integration of the MOD-IO and MOD-IO2 modules from Olimex. They work over i2C, usually connected with UEXT cables to ESP32 board from the same manufacturer. They offer additional GPIO pins and relays which can expand the capabilities of the main boards.
The procedure for using the modules over i2c involves writing and reading commands to/from the i2c address of the module. I know this can be done using a custom component, but it's very complicated to get it working for a non-developer. I'm a network engineer with some minimal C++ programming experience, but I couldn't wrap my head around how to get this done. If it were a native integration, it would just be a matter of using GPIO pins or i2c devices, same as any other sensor or switch.
Thank you.

**Please describe your use case for this integration and alternatives you've tried:**

The Olimex boards are very versatile, and they come in various models using ESP32 chips. Using the UEXT connector, they can be expanded with additional modules (which can also be chained) for adding various sensors, relay, GPIO, etc. Some of the boards are meant for industrial environments (temperature operation -40+85C, galvanic insulation from the Ethernet powering), which makes them suitable for more serious projects.
Currently, I'm using a few of their ESP32-POE-ISO boards as BLE proxies for Home Assistant. I have an ESP32-EVB-IND board, a MOD-IO module and a MOD-IO2 module, which I was hoping to get running with ESPHome so that I can replace some Raspberry Pi's I'm using to control some cheap relay boards. but this would require the relays and GPIO pins on the MOD-IO /IO2 modules to be easily/natively configurable in ESPHome, similar to the regular pins on the ESP32 boards.
I can control the onboard relays on the ESP32-EVB-IND, but only because those are controlled by the native ESP32 pins, which are usable in ESPHome without issues.

**Additional context**

Manuals for MOD-IO and MOD-IO2 modules, where the commands are described, with links to the firmware archive which contains C++ examples (which probably are trivial for a skilled developer to use for creating a component in ESPHome):

https://www.olimex.com/Products/Modules/IO/MOD-IO/resources/MOD-IO.pdf
https://www.olimex.com/Products/Modules/IO/MOD-IO2/resources/MOD-IO2.pdf

Other Olimex boards and modules:
https://www.olimex.com/Products/IoT/ESP32/
https://www.olimex.com/Products/IoT/ESP32-C6/
https://www.olimex.com/Products/Modules/

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the MOD-IO and MOD-IO2 manuals and the C++ examples in the linked firmware archives to understand their I2C commands. Then compare the required relay and GPIO behavior with existing ESPHome component patterns. Done means both modules can be configured natively in ESPHome, with their relays and GPIO pins usable like the issue describes.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
embedded-iot
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.