ha-energy
Set up Home Assistant energy monitoring with dashboards, solar, grid, and device tracking. Use when configuring energy sensors, utility meters, statistics, or analyzing consumption. Activates on keywords: energy dashboard, solar, grid, consumption, kWh, utility meter, power monitoring, state_class, device_class: energy.
What this skill does
# Home Assistant Energy Skill
> Configure Home Assistant energy monitoring with dashboards, solar, grid, and device tracking.
## Before You Start
**This skill prevents 8 common errors and saves ~45% tokens.**
| Metric | Without Skill | With Skill |
|--------|--------------|------------|
| Setup Time | 45+ min | 15 min |
| Common Errors | 8 | 0 |
| Token Usage | ~10000 | ~5500 |
### Known Issues This Skill Prevents
1. Incorrect `state_class` values (must be `total`, `total_increasing`, or `measurement`)
2. Missing `device_class: energy` on energy sensors
3. Wrong `state_class` for utility_meter entities (must be `total_increasing`)
4. Using `unit_of_measurement: kWh` without `state_class` (breaks statistics)
5. Forgetting to enable statistic collection in configuration.yaml
6. Configuring solar sensors without battery tracking for self-consumption
7. Grid monitoring with mismatched sensor pairs (consumption vs return)
8. Utility meter cycle settings that don't align with billing periods
## Quick Start
### Step 1: Configure Energy Sensors
```yaml
# configuration.yaml
template:
- sensor:
- name: "Total Energy Consumed"
unique_id: total_energy_consumed
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
state: "{{ (states('sensor.energy_meter') | float(0)) }}"
- name: "Solar Production"
unique_id: solar_production
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
state: "{{ (states('sensor.solar_meter') | float(0)) }}"
```
**Why this matters:** Proper `state_class` enables Home Assistant to automatically create statistics and energy dashboard integration. Without it, your sensors won't appear in the energy dashboard.
### Step 2: Set Up Utility Meter for Billing Cycles
```yaml
# configuration.yaml
utility_meter:
daily_energy:
source: sensor.total_energy_consumed
cycle: daily
offset: [hours: 0]
monthly_energy:
source: sensor.total_energy_consumed
cycle: monthly
offset: [days: 0]
daily_solar:
source: sensor.solar_production
cycle: daily
offset: [hours: 0]
```
**Why this matters:** Utility meters automatically reset at specified intervals and track consumption periods for billing analysis.
### Step 3: Enable Statistics Recorder
```yaml
# configuration.yaml
recorder:
db_url: !secret database_url # Optional but recommended
auto_purge: true
auto_purge_days: 90 # Adjust retention as needed
# Include sensors with state_class for statistics
include:
entities:
- sensor.total_energy_consumed
- sensor.solar_production
- sensor.grid_consumption
- sensor.grid_return
```
**Why this matters:** Statistics require the recorder to be properly configured. Without explicit inclusion, energy sensors may not generate statistics for long-term analysis.
## Critical Rules
### Always Do
- Use `state_class: total_increasing` for cumulative meters that only increase
- Add `device_class: energy` to all energy sensors
- Set `unit_of_measurement: kWh` (or appropriate unit) on energy sensors
- Configure utility_meter for billing cycle tracking
- Include all energy sensors in recorder's `include` list
- Reset cumulative sensors on device restart via template sensor
- Use separate sensors for grid consumption and grid return
### Never Do
- Use `state_class: measurement` for cumulative meters (breaks statistics)
- Forget the `offset` parameter on utility_meter (may cause midnight resets)
- Mix power (W) and energy (kWh) sensors without Riemann sum integration
- Create energy sensors without `state_class` (they won't work in energy dashboard)
- Assume solar production should subtract from consumption (energy dashboard handles this)
- Configure bidirectional flow on single sensors (use separate consumption/return sensors)
- Skip utility_meter configuration if you need consumption tracking by period
### Common Mistakes
**Wrong:**
```yaml
sensor:
- platform: template
sensors:
total_energy:
unit_of_measurement: kWh
value_template: "{{ states('sensor.meter') }}"
```
**Correct:**
```yaml
template:
- sensor:
- name: "Total Energy"
unique_id: total_energy
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
state: "{{ (states('sensor.meter') | float(0)) }}"
```
**Why:** Template platform is deprecated. Use template integration with proper state_class and device_class to enable energy dashboard integration.
## Known Issues Prevention
| Issue | Root Cause | Solution |
|-------|-----------|----------|
| Energy dashboard shows no data | `state_class` missing or wrong | Use `total_increasing` for cumulative meters |
| Statistics not generated | Sensors not in recorder's include list | Add sensor entities to recorder config |
| Utility meter not resetting | Wrong `offset` or missing `cycle` | Verify cycle (hourly/daily/monthly) and offset settings |
| Solar self-consumption not calculated | Battery sensors not configured separately | Create charge/discharge sensors for batteries |
| Grid consumption incorrect | Using bidirectional sensor instead of separate sensors | Split into grid_consumption and grid_return |
| Sensor unavailable after restart | Cumulative meter not preserved | Add `availability_template` to template sensor |
| Statistics showing wrong values | Raw data has negative values or gaps | Use Riemann sum to convert power to energy |
| Utility meter shows wrong period | Offset set incorrectly for timezone | Align offset with local midnight or billing cycle |
## Configuration Reference
### Energy Sensor Template (YAML)
```yaml
template:
- sensor:
- name: "Main Energy Meter"
unique_id: main_energy_meter
unit_of_measurement: kWh
device_class: energy
state_class: total_increasing
availability_template: "{{ states('sensor.meter_input') not in ['unavailable', 'unknown'] }}"
state: "{{ (states('sensor.meter_input') | float(0)) }}"
- name: "Instantaneous Power"
unique_id: instantaneous_power
unit_of_measurement: W
device_class: power
state_class: measurement
state: "{{ (states('sensor.power_meter') | float(0)) }}"
```
**Key settings:**
- `device_class: energy` - Identifies as energy sensor for energy dashboard
- `state_class: total_increasing` - Cumulative meter that only increases
- `state_class: measurement` - Instantaneous values (power, not energy)
- `unit_of_measurement: kWh` - Energy units; use W for power
- `availability_template` - Prevents unavailable states from breaking statistics
### Utility Meter Configuration (YAML)
```yaml
utility_meter:
daily_consumption:
source: sensor.total_energy_consumed
cycle: daily
offset:
hours: 0
net_consumption: false # true for solar with self-consumption
monthly_consumption:
source: sensor.total_energy_consumed
cycle: monthly
offset:
days: 1 # Reset on 1st of month
hours: 0
peak_consumption:
source: sensor.total_energy_consumed
cycle: weekly
offset:
days: 0 # Reset on Monday
hours: 0
```
**Key settings:**
- `cycle`: hourly, daily, weekly, monthly, bimonthly, quarterly, yearly
- `offset`: Time adjustment for billing alignment
- `net_consumption`: Set to true for solar to track self-consumption
### Riemann Sum Integration (for Power to Energy)
```yaml
integration:
- platform: riemann_sum
name: "Daily Energy from Power"
unique_id: daily_energy_riemann
source: sensor.instantaneous_power
round: 3
unit_prefix: k # Converts W to kWh
unit_time: h
method: trapezoidal
```
**Key settings:**
- `source`: Power sensor (W) to integrate
- `unit_prefix: k` - Converts watts to kilowatts
- `method: trapezoidal` or `left` for integration aRelated in Data & Analytics
clawarr-suite
IncludedComprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl).
querying-soql
IncludedSOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
habit-flow
IncludedAI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally ("I meditated today"), viewing progress, and getting personalized coaching.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
visualizing-data
IncludedBuilds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics. Provides systematic framework for selecting appropriate visualizations based on data characteristics and analytical purpose. Includes 24+ visualization types organized by purpose (trends, comparisons, distributions, relationships, flows, hierarchies, geospatial), accessibility patterns (WCAG 2.1 AA compliance), colorblind-safe palettes, and performance optimization strategies. Use when creating visualizations, choosing chart types, displaying data graphically, or designing data interfaces.