plugins/home-assistant-architect/skills/energy-management/SKILL.md
Home Assistant energy monitoring and optimization patterns.
npx skillsauth add markus41/claude energy-managementInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Home Assistant energy monitoring and optimization patterns.
# configuration.yaml
energy:
# The Energy dashboard is configured via UI
# Settings > Dashboards > Energy
# Whole home power
sensor:
- platform: template
sensors:
home_power:
friendly_name: "Home Power"
unit_of_measurement: "W"
device_class: power
value_template: >
{{ states('sensor.main_meter_power') | float(0) }}
home_energy_daily:
friendly_name: "Daily Energy"
unit_of_measurement: "kWh"
device_class: energy
value_template: >
{{ states('sensor.main_meter_energy') | float(0) }}
# Solar production template
template:
- sensor:
- name: "Solar Power"
unit_of_measurement: "W"
device_class: power
state_class: measurement
state: "{{ states('sensor.inverter_power') | float(0) }}"
- name: "Solar Energy Today"
unit_of_measurement: "kWh"
device_class: energy
state_class: total_increasing
state: "{{ states('sensor.inverter_energy_today') | float(0) }}"
- name: "Solar Self Consumption"
unit_of_measurement: "kWh"
state: >
{% set solar = states('sensor.solar_energy_today') | float(0) %}
{% set export = states('sensor.grid_export_daily') | float(0) %}
{{ (solar - export) | round(2) }}
template:
- sensor:
- name: "Battery Mode"
state: >
{% set power = states('sensor.battery_power') | float(0) %}
{% if power > 100 %}
Charging
{% elif power < -100 %}
Discharging
{% else %}
Idle
{% endif %}
- name: "Battery Runtime"
unit_of_measurement: "hours"
state: >
{% set soc = states('sensor.battery_soc') | float(0) %}
{% set capacity = 13.5 %}
{% set load = states('sensor.home_power') | float(1000) / 1000 %}
{{ ((soc / 100) * capacity / load) | round(1) }}
# Rate input helpers
input_number:
electricity_rate_peak:
name: Peak Rate
min: 0
max: 1
step: 0.01
unit_of_measurement: "$/kWh"
initial: 0.35
electricity_rate_offpeak:
name: Off-Peak Rate
min: 0
max: 1
step: 0.01
unit_of_measurement: "$/kWh"
initial: 0.12
# Binary sensor for rate period
binary_sensor:
- platform: tod
name: Peak Rate Period
after: "16:00"
before: "21:00"
# Cost calculation
template:
- sensor:
- name: "Current Rate"
unit_of_measurement: "$/kWh"
state: >
{% if is_state('binary_sensor.peak_rate_period', 'on') %}
{{ states('input_number.electricity_rate_peak') }}
{% else %}
{{ states('input_number.electricity_rate_offpeak') }}
{% endif %}
- name: "Daily Cost"
unit_of_measurement: "$"
state: >
{% set import = states('sensor.grid_import_daily') | float(0) %}
{% set export = states('sensor.grid_export_daily') | float(0) %}
{% set rate = states('sensor.current_rate') | float(0.25) %}
{{ ((import * rate) - (export * rate * 0.8)) | round(2) }}
# Smart EV charging automation
automation:
- alias: "EV - Solar Surplus Charging"
trigger:
- platform: numeric_state
entity_id: sensor.grid_export
above: 2000
for: "00:05:00"
condition:
- condition: state
entity_id: binary_sensor.ev_connected
state: "on"
action:
- service: switch.turn_on
entity_id: switch.ev_charger
- service: number.set_value
target:
entity_id: number.ev_charge_current
data:
value: >
{{ (states('sensor.grid_export') | float / 240) | round | min(32) }}
type: custom:power-flow-card-plus
entities:
battery:
entity: sensor.battery_power
state_of_charge: sensor.battery_soc
grid:
entity: sensor.grid_power
home:
entity: sensor.home_power
solar:
entity: sensor.solar_power
type: entities
title: Energy Costs
entities:
- entity: sensor.daily_cost
name: Today
- entity: sensor.monthly_cost
name: This Month
- entity: sensor.solar_savings
name: Solar Savings
| Device | Purpose | Protocol | |--------|---------|----------| | Emporia Vue | Whole home | WiFi | | Shelly EM | Circuit monitor | WiFi | | IoTaWatt | Multi-circuit | WiFi | | Sense | AI detection | WiFi | | Coral TPU | Object detection | USB |
development
Enhanced plan-authoring skill with Pre-Writing context gathering, task metadata, non-TDD templates, Red Flags, telemetry, and an automated plan linter. Use when you have a spec or requirements for a multi-step task, before touching code.
tools
Documentation intelligence engine with graph-based API docs, algorithm library, and drift detection
tools
Ultraplan cloud planning — kick off a plan in the cloud from your terminal, review and revise in the browser, then execute remotely or send back to CLI
tools
--- name: mcp description: Configure MCP servers for Claude Code — stdio vs HTTP, authentication, Tools/Resources/Prompts distinction, channels (CI webhook, mobile relay, Discord bridge, fakechat), and cost of always-loaded tools. Use this skill whenever adding an MCP server, debugging connection issues, choosing between MCP Tools vs Prompts vs Resources, installing channel servers, or managing .mcp.json. Triggers on: "MCP server", "mcp config", "add Obsidian MCP", "install context7", "channels"