mirror of
https://github.com/Legolas-2025/esp32-energy-meter.git
synced 2026-08-17 12:35:01 +02:00
13 KiB
13 KiB
Home Assistant Integration Guide
This guide covers how to integrate your ESP32 Energy Meter with Home Assistant for comprehensive energy monitoring and automation.
🎯 Overview
Home Assistant provides a powerful platform for energy monitoring, allowing you to:
- Create detailed energy dashboards
- Set up energy usage alerts
- Integrate with utility companies
- Automate based on consumption
- Analyze trends and patterns
🔗 Integration Methods
Method 1: Auto-Discovery (Recommended)
- Power on ESP32: Device will broadcast presence on network
- Home Assistant Discovery: Device appears under "Devices & Services"
- Add Integration: Click "Configure" to add ESP32 Energy Meter
- Enter API Key: Provide the API key when prompted
Method 2: Manual Integration
- Go to Configuration → Devices & Services
- Click Add Integration
- Search for ESPHome
- Enter IP address:
192.168.1.XXX - Enter API key
📊 Available Entities
Power Monitoring Entities
# Primary power sensors
sensor.esp32_energy_meter_power_1 # Channel 1 Power (W)
sensor.esp32_energy_meter_power_2 # Channel 2 Power (W)
sensor.esp32_energy_meter_voltage_1 # Channel 1 Voltage (V)
sensor.esp32_energy_meter_voltage_2 # Channel 2 Voltage (V)
sensor.esp32_energy_meter_current_1 # Channel 1 Current (A)
sensor.esp32_energy_meter_current_2 # Channel 2 Current (A)
sensor.esp32_energy_meter_energy_1 # Channel 1 Energy (kWh)
sensor.esp32_energy_meter_energy_2 # Channel 2 Energy (kWh)
System Monitoring Entities
# System status
sensor.esp32_energy_meter_wifi_signal_strength # WiFi Signal (dBm)
binary_sensor.esp32_energy_meter_wifi_connection_status # Connection Status
sensor.esp32_energy_meter_frequency # AC Frequency (Hz)
sensor.esp32_energy_meter_power_factor_1 # Channel 1 Power Factor
sensor.esp32_energy_meter_power_factor_2 # Channel 2 Power Factor
🏠 Energy Dashboard Setup
Step 1: Configure Energy Sources
- Go to Configuration → Energy
- Click Add Consumption under "Electricity Grid"
- Select appropriate energy sensor
- Set energy source details
Step 2: Add Consumption Sources
# Recommended configuration for energy dashboard
consumption:
- sensor.esp32_energy_meter_energy_2 # Main consumption
- sensor.esp32_energy_meter_energy_1 # Secondary circuit (optional)
Step 3: Configure Sensors for Dashboard
# Template sensors for better dashboard integration
template:
sensors:
# Daily energy consumption
daily_energy_consumption:
friendly_name: "Daily Energy Consumption"
unit_of_measurement: "kWh"
value_template: >-
{% set today = states('sensor.date') %}
{{ states('sensor.esp32_energy_meter_energy_2') | float(0) }}
icon_template: mdi:flash
# Real-time power usage
current_power_usage:
friendly_name: "Current Power Usage"
unit_of_measurement: "W"
value_template: "{{ states('sensor.esp32_energy_meter_power_2') | float(0) }}"
icon_template: mdi:lightning-bolt
# Power cost estimation
estimated_power_cost:
friendly_name: "Estimated Power Cost"
unit_of_measurement: "$/day"
value_template: >-
{{ (states('sensor.esp32_energy_meter_power_2') | float(0) * 0.12 / 1000) | round(2) }}
icon_template: mdi:currency-usd
📈 Creating Energy Cards
Power Usage Card
type: entities
entities:
- entity: sensor.current_power_usage
name: Current Power
icon: mdi:lightning-bolt
- entity: sensor.esp32_energy_meter_power_1
name: Circuit 1 Power
- entity: sensor.esp32_energy_meter_power_2
name: Circuit 2 Power
show_header_toggle: false
title: Real-time Power Usage
Energy Statistics Card
type: statistics-graph
entities:
- sensor.esp32_energy_meter_power_2
period: 24h
stat_types:
- change
- max
- mean
title: 24 Hour Power Statistics
Energy Gauge Card
type: gauge
entity: sensor.current_power_usage
min: 0
max: 5000
severity:
green: 0
yellow: 2000
red: 4000
unit: W
title: Current Power Usage
🔔 Energy Alerts and Automations
High Power Usage Alert
automation:
- id: high_power_usage_alert
alias: "High Power Usage Alert"
description: "Alert when power usage exceeds threshold"
trigger:
- platform: numeric_state
entity_id: sensor.esp32_energy_meter_power_2
above: 3000 # 3000W threshold
condition:
- condition: time
after: "08:00:00"
before: "22:00:00"
action:
- service: notify.persistent_notification
data:
title: "High Power Usage Alert"
message: "Current power usage is {{ states('sensor.esp32_energy_meter_power_2') }}W"
Energy Cost Tracking
automation:
- id: daily_energy_report
alias: "Daily Energy Report"
description: "Send daily energy consumption report"
trigger:
- platform: time
at: "23:59:00"
condition:
- condition: time
weekday:
- mon
- wed
- fri
action:
- service: notify.telegram
data:
message: >-
Daily Energy Report:
Power: {{ states('sensor.esp32_energy_meter_power_2') }}W
Energy: {{ states('sensor.esp32_energy_meter_energy_2') }}kWh
Power Quality Monitoring
sensor:
- platform: template
sensors:
power_quality_status:
friendly_name: "Power Quality"
value_template: >-
{% set voltage = states('sensor.esp32_energy_meter_voltage_2') | float(0) %}
{% set frequency = states('sensor.esp32_energy_meter_frequency') | float(0) %}
{% set pf = states('sensor.esp32_energy_meter_power_factor_2') | float(1) %}
{% if 220 <= voltage <= 240 and 49 <= frequency <= 51 and pf >= 0.9 %}
Good
{% elif 210 <= voltage <= 250 and 48 <= frequency <= 52 %}
Fair
{% else %}
Poor
{% endif %}
icon_template: >-
{% set status = states('sensor.power_quality_status') %}
{% if status == 'Good' %}
mdi:check-circle
{% elif status == 'Fair' %}
mdi:alert-circle
{% else %}
mdi:alert-octagon
{% endif %}
🏠 Home Automation Examples
Smart Appliance Control
automation:
- id: turn_off_high_consumption_device
alias: "Auto Turn Off High Consumption Device"
description: "Turn off appliances when power usage is too high"
trigger:
- platform: numeric_state
entity_id: sensor.esp32_energy_meter_power_2
above: 4000
condition:
- condition: state
entity_id: switch.large_appliance
state: "on"
action:
- service: switch.turn_off
target:
entity_id: switch.large_appliance
- service: notify.mobile_app_phone
data:
message: "Auto turned off large appliance due to high power usage"
Energy Saving Mode
automation:
- id: energy_saving_mode
alias: "Energy Saving Mode"
description: "Activate energy saving mode during peak hours"
trigger:
- platform: time
at: "16:00:00"
condition:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
action:
- service: climate.set_temperature
target:
entity_id: climate.main_thermostat
data:
temperature: 20
- service: light.turn_off
target:
entity_id: group.living_room_lights
📊 Advanced Dashboard Configuration
Custom Energy Dashboard
views:
- title: Energy Dashboard
path: energy_dashboard
icon: mdi:flash
cards:
- type: energy-distribution
title: Energy Distribution
link_entity: sensor.esp32_energy_meter_energy_2
link_type: consumption
source_type: grid
chart_type: pie
- type: energy-usage-graph
title: Energy Usage
period: 24h
start: "{{ now() - timedelta(days=1) }}"
end: "{{ now() }}"
- type: thermostat
entity: climate.main_thermostat
theme: default
- type: grid
columns: 2
cards:
- type: gauge
entity: sensor.current_power_usage
title: Current Power
unit: W
severity:
green: 0
yellow: 2000
red: 4000
- type: statistic
name: Average Power
entity: sensor.esp32_energy_meter_power_2
period: day
stat_type: mean
- type: sensor
entity: sensor.esp32_energy_meter_voltage_2
name: Voltage
- type: sensor
entity: sensor.esp32_energy_meter_frequency
name: Frequency
🔧 Configuration Tips
Sensor Naming Conventions
# Use descriptive names for better organization
sensor:
- platform: modbus_controller
name: "Kitchen Power"
id: power_kitchen
- platform: modbus_controller
name: "Living Room Power"
id: power_living_room
Custom Device Classes
# Use appropriate device classes for better integration
sensor:
- platform: modbus_controller
device_class: power # For power measurements
address: 0x0052
unit_of_measurement: "W"
- platform: modbus_controller
device_class: voltage # For voltage measurements
address: 0x0050
unit_of_measurement: "V"
- platform: modbus_controller
device_class: current # For current measurements
address: 0x0051
unit_of_measurement: "A"
State Classes for Energy
# Proper state classes for energy measurements
sensor:
- platform: modbus_controller
address: 0x004B # Energy register
unit_of_measurement: "kWh"
state_class: total # For cumulative energy
device_class: energy
📱 Mobile App Integration
Mobile Card Configuration
# Optimized for mobile viewing
cards:
- type: entities
title: Energy Overview
entities:
- sensor.current_power_usage
- sensor.esp32_energy_meter_energy_2
- sensor.esp32_energy_meter_voltage_2
- binary_sensor.esp32_energy_meter_wifi_connection_status
show_header_toggle: false
- type: gauge
title: Power Usage
entity: sensor.current_power_usage
min: 0
max: 5000
unit: W
🔄 Data Retention and History
Recorder Configuration
# In configuration.yaml
recorder:
purge_keep_days: 365 # Keep 1 year of data
commit_interval: 5 # Commit every 5 seconds
exclude:
entities:
- binary_sensor.esp32_energy_meter_wifi_connection_status
Statistics Configuration
# Enable statistics for energy calculations
statistics:
sensors:
- entity_id: sensor.esp32_energy_meter_energy_2
type: state
name: "Energy Statistics"
🎛️ Lovelace UI Customization
Energy Summary Card
type: energy-summary
consumption:
- sensor.esp32_energy_meter_energy_2
grid_return:
- sensor.grid_energy
solar:
- sensor.solar_energy
title: Energy Summary
Power Flow Card
type: energy-distribution
title: Power Flow
link_entity: sensor.esp32_energy_meter_power_2
link_type: consumption
source_type: grid
chart_type: pie
🔍 Troubleshooting Integration
Common Issues
Entities Not Appearing
- Check API key: Ensure correct API key in Home Assistant
- Verify network: Confirm ESP32 and HA are on same network
- Restart integration: Try removing and re-adding ESP32 integration
Missing Energy Data
- Check state class: Ensure energy sensors have
state_class: total - Verify device class: Use
device_class: energyfor energy measurements - Check recorder: Ensure statistics are being recorded
Dashboard Not Loading
- Enable statistics: Statistics must be enabled for energy dashboard
- Check configuration: Verify energy sources are properly configured
- Restart Home Assistant: Sometimes needed after major changes
Debug Commands
# Check ESPHome device status
esphome logs esp32-energy-meter.yaml --device 192.168.1.100
# Monitor ESP32 serial output
esphome logs esp32-energy-meter.yaml --serial /dev/ttyUSB0
# Check Home Assistant logs
tail -f /config/home-assistant.log
📚 Additional Resources
For advanced features and troubleshooting, see Advanced Features and Troubleshooting.