ha-configuration

v2026.09.24

Home Assistant YAML configuration management. Use when editing configuration.yaml, setting up integrations, configuring secrets, or troubleshooting HA configuration.

GitHub
安装命令
npx skhub add laurigates/ha-configuration
Markdown
SKILL.md

Home Assistant Configuration

When to Use This Skill

Use this skill when...Use ha-automations instead when...
Editing configuration.yamlCreating automation rules
Setting up integrationsWriting automation triggers/actions
Managing secrets.yamlDebugging automation logic
Organizing with packagesWorking with automation blueprints
Troubleshooting config errorsSetting up device triggers

Core Configuration Files

FilePurpose
configuration.yamlMain configuration entry point
secrets.yamlSensitive values (passwords, API keys, tokens)
automations.yamlAutomation rules (usually UI-managed)
scripts.yamlReusable script sequences
scenes.yamlScene definitions
customize.yamlEntity customizations
packages/*.yamlModular configuration packages

Configuration Structure

Basic configuration.yaml

homeassistant:
  name: Home
  unit_system: metric
  time_zone: Europe/Helsinki
  currency: EUR
  country: FI

  # External files
  customize: !include customize.yaml
  packages: !include_dir_named packages/

# Core integrations
default_config:

# Text-to-speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

Secrets Management

secrets.yaml:

# API keys
openweathermap_api_key: "abc123def456"
spotify_client_id: "your_client_id"
spotify_client_secret: "your_client_secret"

# Database
recorder_db_url: "postgresql://user:pass@localhost/hass"

# MQTT
mqtt_username: "homeassistant"
mqtt_password: "secure_password"

# Network
latitude: 60.1699
longitude: 24.9384

Reference in configuration.yaml:

weather:
  - platform: openweathermap
    api_key: !secret openweathermap_api_key

recorder:
  db_url: !secret recorder_db_url

Include Directives

DirectiveDescriptionExample
!includeInclude single file!include automations.yaml
!include_dir_listInclude files as list items!include_dir_list sensors/
!include_dir_namedInclude files as named mappings!include_dir_named packages/
!include_dir_merge_listMerge files into single list!include_dir_merge_list automations/
!include_dir_merge_namedMerge files into single mapping!include_dir_merge_named integrations/
!secretReference from secrets.yaml!secret api_key
!env_varEnvironment variable!env_var DB_PASSWORD

Package Organization

Packages allow modular configuration by domain:

packages/climate.yaml:

climate_package:
  sensor:
    - platform: template
      sensors:
        average_indoor_temp:
          friendly_name: "Average Indoor Temperature"
          unit_of_measurement: "°C"
          value_template: >-
            {{ (states('sensor.living_room_temp') | float +
                states('sensor.bedroom_temp') | float) / 2 | round(1) }}

  automation:
    - alias: "Climate - AC Auto Off"
      trigger:
        - platform: numeric_state
          entity_id: sensor.average_indoor_temp
          below: 22
      action:
        - service: climate.turn_off
          target:
            entity_id: climate.living_room_ac

  script:
    climate_cool_down:
      alias: "Cool Down House"
      sequence:
        - service: climate.set_temperature
          target:
            entity_id: climate.living_room_ac
          data:
            temperature: 20
            hvac_mode: cool

packages/presence.yaml:

presence_package:
  input_boolean:
    guest_mode:
      name: "Guest Mode"
      icon: mdi:account-multiple

  binary_sensor:
    - platform: template
      sensors:
        anyone_home:
          friendly_name: "Anyone Home"
          device_class: presence
          value_template: >-
            {{ is_state('person.user1', 'home') or
               is_state('person.user2', 'home') or
               is_state('input_boolean.guest_mode', 'on') }}

Common Integration Patterns

MQTT Configuration

mqtt:
  broker: !secret mqtt_broker
  port: 1883
  username: !secret mqtt_username
  password: !secret mqtt_password
  discovery: true
  discovery_prefix: homeassistant

  sensor:
    - name: "Outdoor Temperature"
      state_topic: "sensors/outdoor/temperature"
      unit_of_measurement: "°C"
      device_class: temperature
      value_template: "{{ value_json.temperature }}"

REST Sensors

sensor:
  - platform: rest
    name: "GitHub Stars"
    resource: https://api.github.com/repos/home-assistant/core
    value_template: "{{ value_json.stargazers_count }}"
    scan_interval: 3600
    headers:
      Authorization: !secret github_token

Template Sensors

template:
  - sensor:
      - name: "Sun Elevation"
        unit_of_measurement: "°"
        state: "{{ state_attr('sun.sun', 'elevation') | round(1) }}"

      - name: "Daylight Hours"
        unit_of_measurement: "hours"
        state: >-
          {% set sunrise = as_timestamp(state_attr('sun.sun', 'next_rising')) %}
          {% set sunset = as_timestamp(state_attr('sun.sun', 'next_setting')) %}
          {{ ((sunset - sunrise) / 3600) | round(1) }}

  - binary_sensor:
      - name: "Workday"
        state: "{{ now().weekday() < 5 }}"

Input Helpers

input_boolean:
  vacation_mode:
    name: "Vacation Mode"
    icon: mdi:airplane

input_number:
  target_temperature:
    name: "Target Temperature"
    min: 16
    max: 28
    step: 0.5
    unit_of_measurement: "°C"
    icon: mdi:thermometer

input_select:
  house_mode:
    name: "House Mode"
    options:
      - Home
      - Away
      - Sleep
      - Guest
    icon: mdi:home

input_text:
  notification_message:
    name: "Custom Notification"
    max: 255

input_datetime:
  alarm_time:
    name: "Alarm Time"
    has_date: false
    has_time: true

Configuration Validation

Check Configuration

# Docker/Container
docker exec homeassistant hass --script check_config

# Home Assistant OS
ha core check

# Supervised
hassio homeassistant check

# Python venv
hass --script check_config -c /path/to/config

Common Validation Errors

ErrorCauseFix
found undefined aliasMissing !secret valueAdd to secrets.yaml
could not determine a constructorInvalid YAML syntaxCheck indentation
duplicate keySame key defined twiceRemove duplicate
Platform not foundMissing integrationInstall via UI/HACS

Recorder Configuration

recorder:
  db_url: !secret recorder_db_url
  purge_keep_days: 10
  commit_interval: 1

  exclude:
    domains:
      - automation
      - updater
    entity_globs:
      - sensor.weather_*
    entities:
      - sun.sun
      - sensor.date

  include:
    domains:
      - sensor
      - binary_sensor
      - switch

Logger Configuration

logger:
  default: warning
  logs:
    homeassistant.core: info
    homeassistant.components.mqtt: debug
    custom_components.my_integration: debug
    # Reduce noise
    homeassistant.components.websocket_api: error

Lovelace Dashboard (YAML Mode)

# configuration.yaml
lovelace:
  mode: yaml
  resources:
    - url: /hacsfiles/button-card/button-card.js
      type: module
  dashboards:
    lovelace-home:
      mode: yaml
      filename: dashboards/home.yaml
      title: Home
      icon: mdi:home
      show_in_sidebar: true

Quick Reference

YAML Tips

PatternExample
Multi-line stringvalue: >- or value: |-
List item- item
Inline list[item1, item2]
Comment# comment
Anchor&anchor_name
Reference*anchor_name
Merge<<: *anchor_name

Template Syntax

FunctionExample
State valuestates('sensor.temp')
State attributestate_attr('sun.sun', 'elevation')
Convert to floatstates('sensor.temp') | float
Roundvalue | round(1)
Default valuestates('sensor.x') | default('unknown')
Timestampas_timestamp(now())
Time deltanow() - timedelta(hours=1)

Agentic Optimizations

ContextCommand
Validate configdocker exec homeassistant hass --script check_config 2>&1 | head -50
Find entity usagegrep -r "entity_id:" config/ --include="*.yaml"
Find secret refsgrep -r "!secret" config/ --include="*.yaml"
List packagesls -la config/packages/
Check YAML syntaxpython3 -c "import yaml; yaml.safe_load(open('file.yaml'))"
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

home-assistant-plugin/skills/ha-configuration

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3