Files

5.5 KiB

Olimex ESP32-C5-EVB — Home Assistant Integration

This repository contains two components:

custom_components/olimex_esp32_c5

Home Assistant custom integration for the Olimex ESP32-C5-EVB board.

  • 2 relay switches (250V / 10A, controlled via HTTP POST to the board)
  • 2 opto-isolated digital inputs (110VAC-240VAC, state pushed from board to HA via webhook)
  • NFC/PN532 card reader for access control (optional, via UEXT connector)
  • No polling — fully event-driven for inputs, command-driven for relays

Installation

Copy custom_components/olimex_esp32_c5 into your Home Assistant config/custom_components/ directory and restart HA.

esp32_arduino

Arduino sketch for the ESP32-C5-EVB board.

  • Hosts a REST API on port 80
  • Registers a callback URL with HA on startup
  • POSTs input state changes to HA webhook in real time
  • Optional NFC card reader integration for relay trigger automation

Arduino IDE Settings

Setting Value
Board ESP32C5 Dev Module
Flash Size 4MB
USB CDC On Boot Enabled

See esp32_arduino/DEPLOYMENT_GUIDE.md for full flashing instructions.

Key Differences from C6-EVB

Feature C6-EVB C5-EVB
Relays 4 2 (250V / 10A)
Inputs 4 2 (opto-isolated 110VAC-240VAC)
Relay 1 GPIO 10 GPIO 24
Relay 2 GPIO 11 GPIO 23
Input 1 GPIO 1 GPIO 4
Input 2 GPIO 2 GPIO 5
LED GPIO 8 GPIO 27
Button GPIO 9 GPIO 28
NFC UART GPIO 4/5 (UEXT1) GPIO 26/25 (UEXT)

Hardware Overview

Pin Configuration

Relays (250V / 10A AC/DC)

  • Relay 1: GPIO24
  • Relay 2: GPIO23

Opto-Isolated Inputs (110VAC-240VAC)

  • Opto Input 1: GPIO4
  • Opto Input 2: GPIO5

LED & Button

  • User LED: GPIO27 (active LOW)
  • User Button: GPIO28 (active LOW, internal pull-up)

UEXT Connector (for NFC reader / additional peripherals)

  • I2C: SDA=GPIO9, SCL=GPIO8
  • UART: TX=GPIO26, RX=GPIO25
  • SPI: CLK=GPIO2, MOSI=GPIO7, MISO=GPIO6

Power & Connectivity

  • USB-C power input
  • WiFi 6 (802.11ax) dual-band (2.4 & 5 GHz)
  • Bluetooth 5.0 LE
  • Zigbee & Thread capable

API Endpoints

Status & Control

  • GET /api/status — Returns all relay and input states (JSON)
  • POST /relay/on?relay=1-2 — Turn relay on
  • POST /relay/off?relay=1-2 — Turn relay off
  • GET /relay/status?relay=1-2 — Get relay state

Inputs

  • GET /input/status?input=1-2 — Get input state

LED

  • POST /led/on — Turn LED on
  • POST /led/off — Turn LED off

Home Assistant Integration

  • POST /register?callback_url=... — Register HA webhook (no auth required for bootstrap)

NFC Access Control

  • GET /nfc/status — Get NFC module status
  • GET /nfc/config — Get NFC access control settings
  • POST /nfc/config?auth_uid=...&relay=1-2&pulse_ms=5000 — Set NFC access config
  • POST /nfc/enable?state=0|1 — Enable/disable NFC module

Debug

  • GET /debug — System info (requires basic auth)

All endpoints except /register require Basic HTTP Authentication (default: admin/admin) or HMAC-SHA256 request signing.


Setup Instructions

  1. Flash the firmware

  2. Configure WiFi

    • Edit WiFi credentials in esp32_arduino.ino (lines ~58-59)
    • Set a static IP (currently 192.168.0.240)
    • Flash the board
  3. Add to Home Assistant

    • Copy custom_components/olimex_esp32_c5/ to ~/.homeassistant/custom_components/
    • Restart Home Assistant
    • Settings → Devices & Services → Create Integration → Olimex ESP32-C5-EVB
    • Enter board IP, port (80), and Home Assistant callback IP
  4. Optional: NFC Card Reader Setup

    • Attach PN532 breakout to UEXT connector (TX=GPIO26, RX=GPIO25)
    • Open board web UI (http://<ip>/)
    • Enable NFC module
    • Scan a card to authorize it
    • Configure trigger relay and timeout

Home Assistant Integration

Once configured, entities appear automatically:

Switches

  • switch.olimex_esp32_c5_relay_1
  • switch.olimex_esp32_c5_relay_2

Binary Sensors

  • binary_sensor.olimex_esp32_c5_input_1 (opto-isolated input)
  • binary_sensor.olimex_esp32_c5_input_2 (opto-isolated input)
  • binary_sensor.olimex_esp32_c5_nfc_card (NFC card present, if enabled)

Automations Create automations to trigger relays on input events, NFC cards, time schedules, etc.


Troubleshooting

Board not reachable

  1. Check WiFi SSID and password in code
  2. Verify board IP with serial console output
  3. Check firewall allows port 80

Inputs not triggering

  1. Verify wiring to opto-isolated inputs (GPIO4, GPIO5)
  2. Use /debug endpoint to check input state
  3. Ensure Home Assistant callback URL is registered

NFC not detecting cards

  1. Check PN532 wiring (TX=GPIO26, RX=GPIO25)
  2. Set PN532 DIP switches to HSU mode (both = 0)
  3. Check serial output for PN532 detection message
  4. Try different baud rates (115200, 9600, 57600, 38400)

Security Notes

  • Default credentials: admin / admin
  • Change WEB_PASSWORD in secrets.h before deployment
  • Enable API_SECRET for HMAC-SHA256 request signing (optional)
  • Only expose board on trusted local networks
  • NFC cards trigger relays when authenticated card is present

License & Attribution

  • Hardware: Olimex
  • Firmware: Arduino & ESP-IDF
  • Integration: Home Assistant Custom Component