ha-entities
1
总安装量
1
周安装量
#50103
全站排名
安装命令
npx skills add https://github.com/laurigates/claude-plugins --skill ha-entities
Agent 安装分布
mcpjam
1
claude-code
1
replit
1
junie
1
windsurf
1
zencoder
1
Skill 文档
Home Assistant Entities
When to Use This Skill
| Use this skill when… | Use ha-automations instead when… |
|---|---|
| Understanding entity domains | Creating automation rules |
| Customizing entities | Working with triggers/actions |
| Creating template sensors | Writing automation conditions |
| Setting up groups | Working with scripts/scenes |
| Working with device classes | Handling events |
Entity ID Structure
domain.object_id
Examples:
light.living_room_ceilingsensor.outdoor_temperaturebinary_sensor.front_door_contactswitch.garden_irrigation
Common Domains
| Domain | Description | Example |
|---|---|---|
light |
Lighting control | light.kitchen |
switch |
On/off switches | switch.outlet |
sensor |
Numeric sensors | sensor.temperature |
binary_sensor |
On/off sensors | binary_sensor.motion |
climate |
HVAC control | climate.thermostat |
cover |
Blinds, garage doors | cover.garage |
lock |
Door locks | lock.front_door |
media_player |
Media devices | media_player.tv |
camera |
Camera feeds | camera.front_yard |
vacuum |
Robot vacuums | vacuum.roomba |
fan |
Fan control | fan.bedroom |
alarm_control_panel |
Alarm systems | alarm_control_panel.home |
person |
People tracking | person.john |
device_tracker |
Device location | device_tracker.phone |
weather |
Weather info | weather.home |
input_boolean |
Virtual toggle | input_boolean.guest_mode |
input_number |
Virtual number | input_number.target_temp |
input_select |
Virtual dropdown | input_select.house_mode |
input_text |
Virtual text | input_text.message |
input_datetime |
Virtual date/time | input_datetime.alarm |
input_button |
Virtual button | input_button.reset |
automation |
Automations | automation.motion_light |
script |
Scripts | script.morning_routine |
scene |
Scenes | scene.movie_night |
group |
Entity groups | group.all_lights |
timer |
Countdown timers | timer.laundry |
counter |
Counters | counter.guests |
zone |
Geographic zones | zone.home |
sun |
Sun position | sun.sun |
Device Classes
Binary Sensor Device Classes
| Class | On State | Off State |
|---|---|---|
battery |
Low | Normal |
battery_charging |
Charging | Not charging |
cold |
Cold | Normal |
connectivity |
Connected | Disconnected |
door |
Open | Closed |
garage_door |
Open | Closed |
gas |
Gas detected | Clear |
heat |
Hot | Normal |
light |
Light detected | No light |
lock |
Unlocked | Locked |
moisture |
Wet | Dry |
motion |
Motion detected | Clear |
occupancy |
Occupied | Clear |
opening |
Open | Closed |
plug |
Plugged in | Unplugged |
power |
Power detected | No power |
presence |
Home | Away |
problem |
Problem | OK |
running |
Running | Not running |
safety |
Unsafe | Safe |
smoke |
Smoke detected | Clear |
sound |
Sound detected | Clear |
tamper |
Tampering | Clear |
update |
Update available | Up-to-date |
vibration |
Vibration | Clear |
window |
Open | Closed |
Sensor Device Classes
| Class | Unit | Description |
|---|---|---|
apparent_power |
VA | Apparent power |
aqi |
– | Air quality index |
atmospheric_pressure |
hPa | Atmospheric pressure |
battery |
% | Battery level |
carbon_dioxide |
ppm | CO2 concentration |
carbon_monoxide |
ppm | CO concentration |
current |
A | Electric current |
data_rate |
Mbps | Data transfer rate |
data_size |
GB | Data size |
distance |
m | Distance |
duration |
s | Time duration |
energy |
kWh | Energy consumption |
frequency |
Hz | Frequency |
gas |
m³ | Gas consumption |
humidity |
% | Relative humidity |
illuminance |
lx | Light level |
irradiance |
W/m² | Solar irradiance |
moisture |
% | Moisture level |
monetary |
⬠| Monetary value |
nitrogen_dioxide |
µg/m³ | NO2 concentration |
nitrogen_monoxide |
µg/m³ | NO concentration |
ozone |
µg/m³ | O3 concentration |
ph |
– | pH level |
pm1 |
µg/m³ | PM1 concentration |
pm10 |
µg/m³ | PM10 concentration |
pm25 |
µg/m³ | PM2.5 concentration |
power |
W | Power consumption |
power_factor |
% | Power factor |
precipitation |
mm | Precipitation |
precipitation_intensity |
mm/h | Precipitation rate |
pressure |
hPa | Pressure |
reactive_power |
var | Reactive power |
signal_strength |
dBm | Signal strength |
sound_pressure |
dB | Sound level |
speed |
m/s | Speed |
sulphur_dioxide |
µg/m³ | SO2 concentration |
temperature |
°C | Temperature |
timestamp |
– | Timestamp |
volatile_organic_compounds |
µg/m³ | VOC concentration |
voltage |
V | Voltage |
volume |
L | Volume |
water |
L | Water consumption |
weight |
kg | Weight |
wind_speed |
m/s | Wind speed |
Entity Customization
customize.yaml
# Single entity
light.living_room:
friendly_name: "Living Room Light"
icon: mdi:ceiling-light
# Binary sensor
binary_sensor.front_door:
friendly_name: "Front Door"
device_class: door
# Sensor
sensor.outdoor_temperature:
friendly_name: "Outdoor Temperature"
device_class: temperature
unit_of_measurement: "°C"
# Hide entity from UI
sensor.internal_counter:
hidden: true
Glob Customization
# Customize all entities matching pattern
customize_glob:
"light.*_ceiling":
icon: mdi:ceiling-light
"sensor.*_temperature":
device_class: temperature
unit_of_measurement: "°C"
"binary_sensor.*_motion":
device_class: motion
"switch.outlet_*":
icon: mdi:power-socket-eu
Template Entities
Template Sensors
template:
- sensor:
# Simple state
- name: "Average Temperature"
unit_of_measurement: "°C"
device_class: temperature
state: >-
{{ ((states('sensor.living_room_temp') | float +
states('sensor.bedroom_temp') | float +
states('sensor.kitchen_temp') | float) / 3) | round(1) }}
# With attributes
- name: "Power Usage"
unit_of_measurement: "W"
device_class: power
state: "{{ states('sensor.energy_meter_power') }}"
attributes:
cost_per_hour: >-
{{ (states('sensor.energy_meter_power') | float * 0.15 / 1000) | round(2) }}
daily_estimate: >-
{{ (states('sensor.energy_meter_power') | float * 24 / 1000) | round(1) }}
# Availability
- name: "Solar Power"
unit_of_measurement: "W"
device_class: power
state: "{{ states('sensor.inverter_power') }}"
availability: "{{ states('sensor.inverter_power') != 'unavailable' }}"
Template Binary Sensors
template:
- binary_sensor:
- name: "Anyone Home"
device_class: presence
state: >-
{{ is_state('person.user1', 'home') or
is_state('person.user2', 'home') }}
- name: "House Secure"
device_class: safety
state: >-
{{ is_state('lock.front_door', 'locked') and
is_state('lock.back_door', 'locked') and
is_state('cover.garage', 'closed') }}
icon: >-
{% if is_state('binary_sensor.house_secure', 'on') %}
mdi:shield-check
{% else %}
mdi:shield-alert
{% endif %}
- name: "Washing Machine Running"
device_class: running
state: "{{ states('sensor.washer_power') | float > 10 }}"
delay_off:
minutes: 5
Template Switches
template:
- switch:
- name: "Guest Mode"
state: "{{ is_state('input_boolean.guest_mode', 'on') }}"
turn_on:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.guest_mode
- service: notify.mobile_app
data:
message: "Guest mode enabled"
turn_off:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.guest_mode
Template Buttons
template:
- button:
- name: "Restart Server"
press:
- service: shell_command.restart_server
- service: notify.admin
data:
message: "Server restart initiated"
Template Numbers
template:
- number:
- name: "Volume"
min: 0
max: 100
step: 5
state: "{{ state_attr('media_player.tv', 'volume_level') | float * 100 }}"
set_value:
- service: media_player.volume_set
target:
entity_id: media_player.tv
data:
volume_level: "{{ value / 100 }}"
Groups
Basic Groups
group:
all_lights:
name: "All Lights"
entities:
- light.living_room
- light.bedroom
- light.kitchen
- light.bathroom
downstairs_lights:
name: "Downstairs Lights"
entities:
- light.living_room
- light.kitchen
- light.hallway
Light Groups (Native)
light:
- platform: group
name: "All Downstairs Lights"
unique_id: downstairs_lights
entities:
- light.living_room
- light.kitchen
- light.hallway
Cover Groups
cover:
- platform: group
name: "All Blinds"
unique_id: all_blinds
entities:
- cover.living_room_blinds
- cover.bedroom_blinds
- cover.kitchen_blinds
Utility Meter
utility_meter:
daily_energy:
source: sensor.energy_meter_total
name: "Daily Energy"
cycle: daily
monthly_energy:
source: sensor.energy_meter_total
name: "Monthly Energy"
cycle: monthly
tariffs:
- peak
- offpeak
weekly_water:
source: sensor.water_meter_total
name: "Weekly Water"
cycle: weekly
Counters and Timers
Counters
counter:
coffee_count:
name: "Coffees Today"
initial: 0
step: 1
minimum: 0
maximum: 20
restore: false
visitors:
name: "Visitor Count"
initial: 0
step: 1
Timers
timer:
laundry:
name: "Laundry Timer"
duration: "01:30:00"
restore: true
cooking:
name: "Cooking Timer"
duration: "00:30:00"
icon: mdi:stove
State Attributes
Common Attributes
| Domain | Common Attributes |
|---|---|
light |
brightness, color_temp, rgb_color, hs_color, effect |
climate |
temperature, current_temperature, hvac_action, preset_mode |
media_player |
volume_level, media_title, media_artist, source |
cover |
current_position, current_tilt_position |
weather |
temperature, humidity, pressure, wind_speed, forecast |
person |
source, latitude, longitude, gps_accuracy |
sun |
elevation, azimuth, next_rising, next_setting |
Accessing Attributes
# In templates
{{ state_attr('light.living_room', 'brightness') }}
{{ state_attr('climate.thermostat', 'current_temperature') }}
{{ state_attr('sun.sun', 'elevation') }}
# In conditions
condition:
- condition: numeric_state
entity_id: light.living_room
attribute: brightness
above: 100
Entity Registry
Finding Entity Information
# Developer Tools > States
# Shows all entities with current state and attributes
# Developer Tools > Services
# Test services with entity targets
# Configuration > Entities
# UI for managing entity settings
Entity Naming Best Practices
| Pattern | Example | Description |
|---|---|---|
domain.room_device |
light.living_room_ceiling |
Room + device type |
domain.room_device_number |
light.kitchen_spot_1 |
With numbering |
domain.location_type |
sensor.outdoor_temperature |
Location + measurement |
domain.device_measurement |
sensor.washer_power |
Device + what it measures |
Quick Reference
State Functions
| Function | Description | Example |
|---|---|---|
states('entity') |
Get state | states('sensor.temp') |
state_attr('entity', 'attr') |
Get attribute | state_attr('light.x', 'brightness') |
is_state('entity', 'value') |
Check state | is_state('light.x', 'on') |
is_state_attr('entity', 'attr', 'val') |
Check attribute | is_state_attr('climate.x', 'hvac_action', 'heating') |
states.domain |
All entities in domain | states.light |
expand('group.x') |
Expand group members | expand('group.all_lights') |
Filter Functions
# Count entities in state
{{ states.light | selectattr('state', 'eq', 'on') | list | count }}
# Get entities matching criteria
{{ states.sensor | selectattr('attributes.device_class', 'eq', 'temperature') | list }}
# Average of multiple sensors
{{ expand('group.temperature_sensors') | map(attribute='state') | map('float') | average }}
Agentic Optimizations
| Context | Command |
|---|---|
| Find entity usage | grep -r "entity_id:" config/ --include="*.yaml" |
| List customizations | grep -rA2 "^[a-z_]*\\..*:" config/customize.yaml |
| Find template sensors | grep -rB2 "platform: template" config/ --include="*.yaml" |
| Find groups | grep -rA5 "^group:" config/ --include="*.yaml" |
| List domains used | grep -roh "[a-z_]*\\." config/ --include="*.yaml" | sort -u |