ESPHome Configuration Helper
Rapid ESPHome configuration generation and troubleshooting skill with ready-to-use templates, GPIO reference guides, and validation utilities.
Purpose
This skill accelerates ESPHome device configuration by providing:
- Quick-start templates for common device types
- GPIO pinout references to prevent conflicts
- Common sensor configurations with wiring diagrams
- Error message lookup and solutions
- Configuration validation workflow
Use this skill for general ESPHome configuration tasks. For ESP32-S3-BOX-3 specific implementations, use the esphome-box3-builder skill instead.
When to Use This Skill
Use this skill when:
- Starting a new ESPHome device configuration
- Adding sensors, switches, or displays to existing configs
- Troubleshooting compilation or runtime errors
- Determining safe GPIO pins for components
- Validating configuration before flashing
Delegate to specialized ESPHome agents for:
- Deep technical questions (esphome-core, esphome-components, etc.)
- Complex automation logic (esphome-automations agent)
- Network troubleshooting (esphome-networking agent)
- ESP32-S3-BOX-3 projects (esphome-box3 agent)
Configuration Templates
Available Templates
Located in templates/ directory:
basic-device.yaml- Minimal ESP32 starter
- ESP32 platform with WiFi and API - OTA updates enabled - Logger and web server - Use as foundation for custom projects
sensor-node.yaml- Temperature/humidity sensor node
- DHT22 sensor on GPIO4 - WiFi with fallback AP - Home Assistant integration - Use for environmental monitoring
relay-switch.yaml- 4-channel relay controller
- GPIO control for 4 relays (GPIO23, GPIO22, GPIO21, GPIO19) - Physical button inputs with interlocks - Switch entities for Home Assistant - Use for home automation switching
display-node.yaml- Display with sensors
- SSD1306 OLED display (128x64, I²C) - DHT22 temperature/humidity - Display lambda showing sensor readings - Use for visual sensor displays
Using Templates
To use a template:
- Read the appropriate template file
- Customize device name, WiFi credentials, GPIO pins
- Add or remove components as needed
- Validate configuration (see Validation Workflow below)
Template Workflow:
# 1. Read template
cat .claude/skills/esphome-config-helper/templates/sensor-node.yaml
# 2. Copy to project
cp .claude/skills/esphome-config-helper/templates/sensor-node.yaml my-device.yaml
# 3. Edit with device-specific values
# - Update device name
# - Set WiFi credentials (use secrets.yaml)
# - Adjust GPIO pins if needed
# - Customize sensor names
# 4. Validate (see Validation Workflow)GPIO Pin Reference
Quick GPIO Lookup
For detailed GPIO pinouts and safe pin selection, consult:
references/gpio-pinouts.md- Complete ESP32 and ESP8266 GPIO reference
- Safe pins for each platform - Strapping pins to avoid - I²C/SPI/UART default pins - Input-only vs output-capable pins - Boot failure pins (GPIO0, GPIO2, GPIO15)
Quick Safe Pins:
- ESP32: GPIO4, GPIO5, GPIO12, GPIO13, GPIO14, GPIO16, GPIO17, GPIO18, GPIO19, GPIO21, GPIO22, GPIO23, GPIO25-27, GPIO32, GPIO33
- ESP8266: GPIO4 (D2), GPIO5 (D1), GPIO12 (D6), GPIO13 (D7), GPIO14 (D5)
Avoid (strapping/boot pins):
- ESP32: GPIO0, GPIO2, GPIO5, GPIO12, GPIO15 (use with caution)
- ESP8266: GPIO0, GPIO2, GPIO15
Common Sensor Configurations
Sensor Selection Guide
For detailed sensor configurations with wiring diagrams, consult:
references/common-sensors.md- Top 20 sensor configurations
- Temperature/humidity sensors (DHT22, BME280, SHT3x) - Motion sensors (PIR, mmWave) - Light sensors (BH1750, TSL2561) - Distance sensors (HC-SR04, VL53L0X) - Gas sensors (MQ-series, SGP30) - Complete wiring diagrams and platform selection
Quick Sensor Recommendations:
- Temperature/Humidity: BME280 (I²C, more reliable than DHT22)
- Motion: HC-SR501 PIR (GPIO binary sensor)
- Light: BH1750 (I²C, accurate lux measurements)
- Distance: HC-SR04 (ultrasonic, 2-400cm range)
- Air Quality: BME680 (I²C, temp/humidity/pressure/gas)
Basic Sensor Patterns
I²C Sensor (BME280 example):
i2c:
sda: GPIO21
scl: GPIO22
scan: true
sensor:
- platform: bme280
temperature:
name: "Temperature"
humidity:
name: "Humidity"
pressure:
name: "Pressure"
address: 0x76
update_interval: 60sGPIO Sensor (DHT22 example):
sensor:
- platform: dht
pin: GPIO4
model: DHT22
temperature:
name: "Temperature"
humidity:
name: "Humidity"
update_interval: 60sBinary Sensor (PIR motion):
binary_sensor:
- platform: gpio
pin: GPIO14
name: "Motion Sensor"
device_class: motionTroubleshooting Guide
Error Lookup
For complete error message lookup table and solutions, consult:
references/troubleshooting.md- Comprehensive error message reference
- Compilation errors (unknown platform, GPIO conflicts, dependency issues) - Runtime errors (WiFi failures, sensor timeouts, OTA problems) - Configuration errors (YAML syntax, invalid pins, missing components) - Hardware issues (sensor not detected, relay not switching)
Common Error Quick Reference:
| Error Message | Quick Fix |
|---|---|
| "Unknown platform" | Check component name spelling, ensure platform supported |
| "GPIO already in use" | Check GPIO pin assignments, avoid duplicates |
| "Could not compile" | Check YAML syntax, verify indentation (2 spaces) |
| "WiFi connection failed" | Verify SSID/password, check signal strength, use static IP |
| "Sensor not found" | Check I²C address (use scan: true), verify wiring |
| "OTA upload failed" | Check device reachable, verify OTA password, restart device |
Troubleshooting Workflow
When encountering errors:
- Check YAML syntax: Verify indentation (2 spaces, no tabs)
- Validate GPIO pins: Ensure no conflicts, use safe pins
- Check component platform: Verify platform name and configuration
- Review logs: Use
esphome logs device.yamlto see runtime errors - Consult references: Check
references/troubleshooting.mdfor specific error - Validate config: Run validation workflow (see below)
Validation Workflow
Using the Validation Script
The validation utility provides quick configuration checks:
Script: scripts/validate-config.sh
Usage:
# Validate configuration
./.claude/skills/esphome-config-helper/scripts/validate-config.sh my-device.yaml
# The script runs:
# 1. esphome config my-device.yaml (syntax check)
# 2. esphome compile my-device.yaml (compilation test)Validation Steps:
- Syntax validation:
esphome config my-device.yaml
- Checks YAML syntax - Validates component configuration - Reports missing requirements - Shows final configuration
- Compilation test:
esphome compile my-device.yaml
- Downloads required libraries - Compiles firmware - Reports errors and warnings - Confirms configuration works
- Fix errors: If validation fails:
- Review error messages - Check GPIO conflicts - Verify component platforms - Consult references/troubleshooting.md - Re-validate after fixes
Pre-Flash Checklist
Before flashing device:
- Configuration validates without errors
- WiFi credentials correct (use secrets.yaml)
- Device name unique on network
- GPIO pins verified safe
- OTA password set (for future updates)
- API encryption key configured (2026.1.0+)
Configuration Best Practices
YAML Structure
Organize configuration in logical sections:
# 1. Core platform
esphome:
name: device-name
friendly_name: Device Name
esp32:
board: esp32dev
framework:
type: arduino
# 2. Network
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
api:
encryption:
key: !secret api_encryption_key
ota:
- platform: esphome
password: !secret ota_password
# 3. Logging
logger:
web_server:
# 4. Components (sensors, switches, etc.)
sensor:
# ...
binary_sensor:
# ...Secrets Management
Use secrets.yaml for sensitive data:
secrets.yaml:
wifi_ssid: "MyNetwork"
wifi_password: "MyPassword123"
api_encryption_key: "base64-generated-key"
ota_password: "SecureOTAPassword"Reference in config:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_passwordNaming Conventions
Follow consistent naming:
- Device names: lowercase-with-hyphens (e.g.,
bedroom-sensor) - Entity names: Title Case with Spaces (e.g.,
"Bedroom Temperature") - IDs: lowercase_with_underscores (e.g.,
temp_sensor)
Example:
sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Living Room Temperature"
id: living_room_temp
humidity:
name: "Living Room Humidity"
id: living_room_humidityIntegration with Other Skills and Agents
When to Use Other Resources
- ESP32-S3-BOX-3 projects: Use esphome-box3-builder skill
- Audio pipeline (I²S, ES7210, ES8311) - Display lambda rendering (ILI9xxx) - Touch interaction (GT911) - Voice assistant integration
- Deep technical questions: Delegate to ESPHome agents
- Core concepts → esphome-core agent - Component selection → esphome-components agent - Automation logic → esphome-automations agent - Network issues → esphome-networking agent - HA integration → esphome-homeassistant agent
- Complex projects: Combine resources
- Start with template (this skill) - Customize with agent guidance - Validate with scripts (this skill) - Deploy and troubleshoot (this skill + agents)
Additional Resources
Reference Files
For detailed information, consult:
references/gpio-pinouts.md- Complete ESP32/ESP8266 GPIO reference with safe pins, strapping pins, and pin capabilitiesreferences/common-sensors.md- Top 20 sensor configurations with wiring diagrams, platform selection, and usage examplesreferences/troubleshooting.md- Comprehensive error message lookup table with solutions for compilation, runtime, and hardware issues
Template Files
Working configuration examples in templates/:
basic-device.yaml- Minimal ESP32 foundationsensor-node.yaml- DHT22 temperature/humidity noderelay-switch.yaml- 4-channel relay controllerdisplay-node.yaml- OLED display with sensors
Utility Scripts
Validation and testing tools in scripts/:
validate-config.sh- ESPHome configuration validation wrapper
Quick Start Workflow
For new ESPHome device:
- Select template based on device type (sensor, switch, display, or basic)
- Copy template to project directory
- Customize configuration:
- Update device name - Set WiFi credentials in secrets.yaml - Adjust GPIO pins using references/gpio-pinouts.md - Add/remove components as needed
- Validate configuration using
scripts/validate-config.sh - Fix any errors using
references/troubleshooting.md - Flash device with validated configuration
- Monitor logs and troubleshoot if needed
For adding to existing config:
- Consult references for component configuration
- Check GPIO availability in
references/gpio-pinouts.md - Add component to configuration
- Validate before flashing
- Update and monitor
This skill provides rapid configuration generation for common ESPHome use cases. For specialized hardware (ESP32-S3-BOX-3) or deep technical questions, use the appropriate specialist skills and agents.