6.0 KiB
6.0 KiB
Olimex ESP32-C6-EVB Home Assistant Integration Setup Guide
Overview
This Home Assistant integration automatically manages the Olimex ESP32-C6-EVB board configuration through the UI.
Features
- Binary Sensors - Monitor 4 digital inputs (DIN1-DIN4)
- Template Switches - Control 4 relays (REL1-REL4)
- Auto-discovery - Configurable via config flow UI (no YAML required)
- Connection validation - Verifies board is online before saving config
Installation
1. Deploy Arduino Firmware
First, ensure your board is running the updated Arduino firmware with all 4 relays and inputs configured:
- Deploy:
/srv/homeassist/esp32_arduino/esp32_arduino.ino - Board: Olimex ESP32-C6-EVB
- Firmware includes:
- Static IP:
192.168.0.181 - 4 Relays (GPIO 10, 11, 22, 23)
- 4 Inputs (GPIO 1, 2, 3, 15) with pull-ups
- Static IP:
2. Setup Integration via Home Assistant UI
- Go to Settings → Devices & Services
- Click Create Integration (+ button)
- Search for "Olimex"
- Click Olimex ESP32-C6-EVB
- Enter configuration:
- Device IP Address:
192.168.0.181(default) - Port:
80(default) - Scan Interval:
5seconds (default)
- Device IP Address:
- Click Submit
The integration will:
- ✅ Verify connection to the board
- ✅ Create 4 binary sensors for inputs
- ✅ Set up the data coordinator for relay polling
3. Create Template Switches (Manual for now)
For now, you still need to add this to your configuration.yaml:
template:
- switch:
- name: "Relay 1"
unique_id: "olimex_relay_1"
state: "{{ state_attr('sensor.relay_1_status', 'state') | default('off') }}"
turn_on:
service: rest_command.relay_1_on
turn_off:
service: rest_command.relay_1_off
- name: "Relay 2"
unique_id: "olimex_relay_2"
state: "{{ state_attr('sensor.relay_2_status', 'state') | default('off') }}"
turn_on:
service: rest_command.relay_2_on
turn_off:
service: rest_command.relay_2_off
- name: "Relay 3"
unique_id: "olimex_relay_3"
state: "{{ state_attr('sensor.relay_3_status', 'state') | default('off') }}"
turn_on:
service: rest_command.relay_3_on
turn_off:
service: rest_command.relay_3_off
- name: "Relay 4"
unique_id: "olimex_relay_4"
state: "{{ state_attr('sensor.relay_4_status', 'state') | default('off') }}"
turn_on:
service: rest_command.relay_4_on
turn_off:
service: rest_command.relay_4_off
sensor:
- platform: rest
name: "Relay 1 Status"
unique_id: "sensor_relay_1_status"
resource: "http://192.168.0.181/relay/status?relay=1"
value_template: "{{ value_json.state }}"
scan_interval: 5
- platform: rest
name: "Relay 2 Status"
unique_id: "sensor_relay_2_status"
resource: "http://192.168.0.181/relay/status?relay=2"
value_template: "{{ value_json.state }}"
scan_interval: 5
- platform: rest
name: "Relay 3 Status"
unique_id: "sensor_relay_3_status"
resource: "http://192.168.0.181/relay/status?relay=3"
value_template: "{{ value_json.state }}"
scan_interval: 5
- platform: rest
name: "Relay 4 Status"
unique_id: "sensor_relay_4_status"
resource: "http://192.168.0.181/relay/status?relay=4"
value_template: "{{ value_json.state }}"
scan_interval: 5
rest_command:
relay_1_on:
url: "http://192.168.0.181/relay/on?relay=1"
method: POST
relay_1_off:
url: "http://192.168.0.181/relay/off?relay=1"
method: POST
relay_2_on:
url: "http://192.168.0.181/relay/on?relay=2"
method: POST
relay_2_off:
url: "http://192.168.0.181/relay/off?relay=2"
method: POST
relay_3_on:
url: "http://192.168.0.181/relay/on?relay=3"
method: POST
relay_3_off:
url: "http://192.168.0.181/relay/off?relay=3"
method: POST
relay_4_on:
url: "http://192.168.0.181/relay/on?relay=4"
method: POST
relay_4_off:
url: "http://192.168.0.181/relay/off?relay=4"
method: POST
Then restart Home Assistant.
API Endpoints
The board provides these REST API endpoints:
Relay Control
POST /relay/on?relay=1-4- Turn relay onPOST /relay/off?relay=1-4- Turn relay offGET /relay/status?relay=1-4- Get relay state (returns{"state": true/false})
Input Reading
GET /input/status?input=1-4- Read input state (returns{"state": true/false})
Device Status
GET /api/status- Get overall device status
Entities Created
Binary Sensors (Inputs)
binary_sensor.input_1- Digital Input 1 (GPIO 1)binary_sensor.input_2- Digital Input 2 (GPIO 2)binary_sensor.input_3- Digital Input 3 (GPIO 3)binary_sensor.input_4- Digital Input 4 (GPIO 15)
Switches (Relays) - via template
switch.relay_1- Relay 1 (GPIO 10)switch.relay_2- Relay 2 (GPIO 11)switch.relay_3- Relay 3 (GPIO 22)switch.relay_4- Relay 4 (GPIO 23)
Sensors (Status)
sensor.relay_1_status- Relay 1 state pollingsensor.relay_2_status- Relay 2 state pollingsensor.relay_3_status- Relay 3 state pollingsensor.relay_4_status- Relay 4 state polling
Troubleshooting
Integration won't add
- Check board IP is correct (default:
192.168.0.181) - Verify board is online and connected to WiFi
- Check Home Assistant logs:
Settings > System > Logs
Inputs not showing
- Verify Arduino firmware is deployed
- Check GPIO pin configuration matches board
- Inputs show as binary_sensor entities after integration setup
Relays not working
- Ensure relay REST sensors are created in configuration.yaml
- Verify REST commands point to correct IP/port
- Check board serial output for API activity
Slow response time
- Increase scan interval (default is 5 seconds)
- Can be changed in integration options
Future Enhancements
- Auto-create relay switches without YAML
- Add sensor polling via coordinator
- Support multiple boards
- Device discovery (mDNS when available)
- Web UI for board settings