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: 60s
GPIO Sensor (DHT22 example):
sensor:
- platform: dht pin: GPIO4 model: DHT22 temperature: name: "Temperature" humidity: name: "Humidity" update_interval: 60s
Binary Sensor (PIR motion):
binary_sensor:
- platform: gpio pin: GPIO14 name: "Motion Sensor" device_class: motion
Troubleshooting 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.yaml to see runtime errors
-
Consult references: Check references/troubleshooting.md for 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_password
Naming 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_humidity
Integration 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 capabilities
-
references/common-sensors.md
-
Top 20 sensor configurations with wiring diagrams, platform selection, and usage examples
-
references/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 foundation
-
sensor-node.yaml
-
DHT22 temperature/humidity node
-
relay-switch.yaml
-
4-channel relay controller
-
display-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.