mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-05-28 18:43:40 +00:00
chore(configuration): enhance development configuration for Home Assistant
Updated the configuration files to improve development experience by explicitly loading useful integrations and adjusting logging levels. Added YAML schemas for configuration and services to ensure proper structure and validation. Impact: Developers will have a more streamlined setup process and better logging during integration development.
This commit is contained in:
parent
3ba8e91958
commit
dd59c687e3
5 changed files with 1368 additions and 21 deletions
|
|
@ -1,20 +1,32 @@
|
||||||
# Development-friendly config that excludes go2rtc which has compatibility issues
|
# yaml-language-server: $schema=../schemas/yaml/configuration_schema.yaml
|
||||||
|
# Development-friendly Home Assistant configuration
|
||||||
|
#
|
||||||
|
# We don't use default_config to avoid HA OS-specific integrations like go2rtc
|
||||||
|
# that expect specific container environments. Instead, we explicitly load
|
||||||
|
# the integrations useful for custom component development.
|
||||||
|
|
||||||
# https://www.home-assistant.io/integrations/homeassistant/
|
# https://www.home-assistant.io/integrations/homeassistant/
|
||||||
homeassistant:
|
homeassistant:
|
||||||
debug: true
|
debug: true
|
||||||
|
|
||||||
# Disable analytics, diagnostics and error reporting for development instance
|
# Debugging integration
|
||||||
|
# https://www.home-assistant.io/integrations/debugpy/
|
||||||
|
debugpy:
|
||||||
|
|
||||||
|
# Privacy & analytics settings
|
||||||
# https://www.home-assistant.io/integrations/analytics/
|
# https://www.home-assistant.io/integrations/analytics/
|
||||||
analytics:
|
analytics:
|
||||||
# Disable usage analytics to prevent skewing production statistics
|
# Analytics are disabled to prevent development instances from skewing
|
||||||
# https://analytics.home-assistant.io should only reflect real user installations
|
# production statistics at https://analytics.home-assistant.io
|
||||||
|
|
||||||
|
# System monitoring
|
||||||
# https://www.home-assistant.io/integrations/system_health/
|
# https://www.home-assistant.io/integrations/system_health/
|
||||||
system_health:
|
system_health:
|
||||||
|
# Provides system health information in Settings > System > Repairs
|
||||||
|
# Safe for development - only shows local system status
|
||||||
|
|
||||||
# https://www.home-assistant.io/integrations/diagnostics/
|
# Note: The diagnostics integration is always loaded and cannot be disabled.
|
||||||
# Note: Diagnostics integration cannot be disabled, but without analytics
|
# With analytics disabled, diagnostic data stays local and isn't sent anywhere.
|
||||||
# and with internal_url set, no data is sent externally
|
|
||||||
|
|
||||||
# Core integrations
|
# Core integrations
|
||||||
http:
|
http:
|
||||||
|
|
@ -34,19 +46,120 @@ http:
|
||||||
cors_allowed_origins:
|
cors_allowed_origins:
|
||||||
- "*"
|
- "*"
|
||||||
|
|
||||||
|
# Config UI integration - useful for development
|
||||||
|
config:
|
||||||
|
|
||||||
|
# Frontend - required for UI
|
||||||
|
frontend:
|
||||||
|
# Optional: Enable custom themes
|
||||||
|
# themes: !include_dir_merge_named themes
|
||||||
|
|
||||||
automation:
|
automation:
|
||||||
|
|
||||||
script:
|
script:
|
||||||
|
|
||||||
scene:
|
scene:
|
||||||
|
|
||||||
|
# Useful default_config integrations for development
|
||||||
|
# https://www.home-assistant.io/integrations/history/
|
||||||
|
history:
|
||||||
|
|
||||||
|
# https://www.home-assistant.io/integrations/logbook/
|
||||||
|
logbook:
|
||||||
|
|
||||||
|
# https://www.home-assistant.io/integrations/conversation/
|
||||||
|
# conversation:
|
||||||
|
# Note: Uncomment to enable voice assistant/conversation features
|
||||||
|
# Dependencies (hassil, home-assistant-intents) are pre-installed in bootstrap
|
||||||
|
|
||||||
|
# https://www.home-assistant.io/integrations/webhook/
|
||||||
|
webhook:
|
||||||
|
|
||||||
|
# https://www.home-assistant.io/integrations/my/
|
||||||
|
my:
|
||||||
|
|
||||||
|
# https://www.home-assistant.io/integrations/recorder/
|
||||||
|
recorder:
|
||||||
|
# Development-friendly database settings
|
||||||
|
# Reduce database size and improve performance
|
||||||
|
purge_keep_days: 2
|
||||||
|
commit_interval: 30
|
||||||
|
# Exclude entities you don't need history for
|
||||||
|
exclude:
|
||||||
|
domains:
|
||||||
|
# Sun position changes constantly, rarely needed in dev
|
||||||
|
- sun
|
||||||
|
# Backups don't need history
|
||||||
|
- backup
|
||||||
|
# Updates don't need full history tracking
|
||||||
|
- update
|
||||||
|
entity_globs:
|
||||||
|
# Time sensors change every second/minute
|
||||||
|
- sensor.time*
|
||||||
|
- sensor.date*
|
||||||
|
# Uptime sensors not interesting for development
|
||||||
|
- sensor.*uptime*
|
||||||
|
- sensor.*last_boot*
|
||||||
|
# Memory/CPU sensors create a lot of data
|
||||||
|
- sensor.*memory*
|
||||||
|
- sensor.*cpu*
|
||||||
|
event_types:
|
||||||
|
# Very frequent, rarely needed in development
|
||||||
|
- call_service
|
||||||
|
# System events create lots of noise
|
||||||
|
- system_log_event
|
||||||
|
# Component loading events
|
||||||
|
- component_loaded
|
||||||
|
|
||||||
energy:
|
energy:
|
||||||
|
|
||||||
# https://www.home-assistant.io/integrations/logger/
|
# https://www.home-assistant.io/integrations/logger/
|
||||||
logger:
|
logger:
|
||||||
default: info
|
default: info
|
||||||
logs:
|
logs:
|
||||||
# Main integration logger - applies to ALL sub-loggers by default
|
# Reduce noise from chatty components
|
||||||
|
homeassistant.components.recorder: warning
|
||||||
|
homeassistant.components.recorder.util: warning
|
||||||
|
homeassistant.components.websocket_api: warning
|
||||||
|
homeassistant.components.http.ban: warning
|
||||||
|
homeassistant.components.zeroconf: warning
|
||||||
|
homeassistant.components.ssdp: warning
|
||||||
|
homeassistant.components.bluetooth: warning
|
||||||
|
# Conversation can be noisy with hassil
|
||||||
|
homeassistant.components.conversation: warning
|
||||||
|
# Analytics/metrics are not interesting during development
|
||||||
|
homeassistant.components.analytics: error
|
||||||
|
|
||||||
|
# Hide platform setup messages (scene, binary_sensor, sensor, etc.)
|
||||||
|
homeassistant.components.scene: warning
|
||||||
|
homeassistant.components.binary_sensor: warning
|
||||||
|
homeassistant.components.sensor: warning
|
||||||
|
homeassistant.components.event: warning
|
||||||
|
homeassistant.components.switch: warning
|
||||||
|
|
||||||
|
# HTTP/network
|
||||||
|
homeassistant.components.http: warning
|
||||||
|
|
||||||
|
# Keep loader at warning level to see real issues with our integration
|
||||||
|
homeassistant.loader: warning
|
||||||
|
|
||||||
|
# Hide the verbose "Setting up X" messages during startup
|
||||||
|
# but keep warnings/errors visible
|
||||||
|
homeassistant.bootstrap: warning
|
||||||
|
homeassistant.setup: warning
|
||||||
|
|
||||||
|
# Core system - keep visible for important messages
|
||||||
|
homeassistant.core: info
|
||||||
|
|
||||||
|
# IMPORTANT for custom integration development:
|
||||||
|
# Coordinator issues (API calls, update failures)
|
||||||
|
homeassistant.helpers.update_coordinator: info
|
||||||
|
# Entity registration problems
|
||||||
|
homeassistant.helpers.entity_registry: info
|
||||||
|
# Config flow debugging (setup, options)
|
||||||
|
homeassistant.config_entries: info
|
||||||
|
|
||||||
|
# Your integration debug logging - shows EVERYTHING from your integration
|
||||||
custom_components.tibber_prices: debug
|
custom_components.tibber_prices: debug
|
||||||
|
|
||||||
# Reduce verbosity for details loggers (change to 'debug' for deep debugging)
|
# Reduce verbosity for details loggers (change to 'debug' for deep debugging)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"title": "Home Assistant integration manifest",
|
"title": "Home Assistant Custom Integration manifest for HACS",
|
||||||
"description": "The manifest for a Home Assistant integration",
|
"description": "The manifest.json schema for Home Assistant custom integrations distributed via HACS (Home Assistant Community Store). Extends the official Home Assistant manifest schema with HACS-specific requirements like version and issue_tracker fields.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"if": {
|
"if": {
|
||||||
"properties": { "integration_type": { "const": "virtual" } },
|
"properties": {
|
||||||
|
"integration_type": {
|
||||||
|
"const": "virtual"
|
||||||
|
}
|
||||||
|
},
|
||||||
"required": ["integration_type"]
|
"required": ["integration_type"]
|
||||||
},
|
},
|
||||||
"then": {
|
"then": {
|
||||||
|
|
@ -129,7 +133,9 @@
|
||||||
"properties": {
|
"properties": {
|
||||||
"description": "The properties of the Zeroconf advertisement to filter.",
|
"description": "The properties of the Zeroconf advertisement to filter.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": { "type": "string" }
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["type"],
|
"required": ["type"],
|
||||||
|
|
@ -160,7 +166,9 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": { "type": "string" }
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bluetooth": {
|
"bluetooth": {
|
||||||
|
|
@ -300,9 +308,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"documentation": {
|
"documentation": {
|
||||||
"description": "The website containing the documentation for the integration. It has to be in the format \"https://www.home-assistant.io/integrations/[domain]\"\nhttps://developers.home-assistant.io/docs/creating_integration_manifest/#documentation",
|
"description": "The website containing the documentation for the integration. For core integrations, it should be \"https://www.home-assistant.io/integrations/[domain]\". Custom integrations can use any URL.\nhttps://developers.home-assistant.io/docs/creating_integration_manifest/#documentation",
|
||||||
|
"type": "string",
|
||||||
|
"format": "uri"
|
||||||
|
},
|
||||||
|
"issue_tracker": {
|
||||||
|
"description": "The issue tracker of your integration, where users can report issues. For custom integrations, this is typically a GitHub issues URL.\nhttps://developers.home-assistant.io/docs/creating_integration_manifest/#issue-tracker",
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"pattern": "^https://www.home-assistant.io/integrations/[0-9a-z_]+$",
|
|
||||||
"format": "uri"
|
"format": "uri"
|
||||||
},
|
},
|
||||||
"quality_scale": {
|
"quality_scale": {
|
||||||
|
|
@ -375,15 +387,31 @@
|
||||||
"single_config_entry": {
|
"single_config_entry": {
|
||||||
"description": "Whether the integration only supports a single config entry.\nhttps://developers.home-assistant.io/docs/creating_integration_manifest/#single-config-entry-only",
|
"description": "Whether the integration only supports a single config entry.\nhttps://developers.home-assistant.io/docs/creating_integration_manifest/#single-config-entry-only",
|
||||||
"const": true
|
"const": true
|
||||||
|
},
|
||||||
|
"version": {
|
||||||
|
"description": "The version of the integration. Required for custom integrations, should be omitted for core integrations.\nhttps://developers.home-assistant.io/docs/creating_integration_manifest/#version",
|
||||||
|
"type": "string",
|
||||||
|
"pattern": "^([0-9]+)\\.([0-9]+)\\.([0-9]+)(?:[-\\.]([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+[0-9A-Za-z-]+)?$"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"required": ["domain", "name", "codeowners", "documentation"],
|
"required": [
|
||||||
|
"domain",
|
||||||
|
"name",
|
||||||
|
"codeowners",
|
||||||
|
"documentation",
|
||||||
|
"issue_tracker",
|
||||||
|
"version"
|
||||||
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mqtt": {
|
"mqtt": {
|
||||||
"anyOf": [
|
"anyOf": [
|
||||||
{ "required": ["dependencies"] },
|
{
|
||||||
{ "required": ["after_dependencies"] }
|
"required": ["dependencies"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"required": ["after_dependencies"]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"title": "Home Assistant Translation File Schema",
|
"title": "Home Assistant Custom Integration Translation (strings.json)",
|
||||||
"description": "Schema for Home Assistant custom integration translation files based on https://developers.home-assistant.io/docs/internationalization/core",
|
"description": "JSON schema for Home Assistant custom integration translation files (strings.json and translations/*.json). Defines translations for config flows, entities, services, device automations, and more. Based on the official Home Assistant internationalization specification: https://developers.home-assistant.io/docs/internationalization/core",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"title": {
|
"title": {
|
||||||
|
|
@ -187,13 +187,17 @@
|
||||||
},
|
},
|
||||||
"sections": {
|
"sections": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Collapsible section labels",
|
"description": "Collapsible section labels and descriptions",
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Section name"
|
"description": "Section name"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Section description (optional, supports Markdown)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
591
schemas/yaml/configuration_schema.yaml
Normal file
591
schemas/yaml/configuration_schema.yaml
Normal file
|
|
@ -0,0 +1,591 @@
|
||||||
|
# YAML Schema for Home Assistant configuration.yaml
|
||||||
|
# Based on: https://www.home-assistant.io/docs/configuration/
|
||||||
|
$schema: http://json-schema.org/draft-07/schema#
|
||||||
|
title: Home Assistant Configuration
|
||||||
|
description: Basic schema for Home Assistant configuration.yaml. This covers core configuration structure but individual integrations have their own specific schemas.
|
||||||
|
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
homeassistant:
|
||||||
|
type: object
|
||||||
|
description: Core Home Assistant configuration
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: Name of the location
|
||||||
|
|
||||||
|
latitude:
|
||||||
|
type: number
|
||||||
|
description: Latitude of your location
|
||||||
|
|
||||||
|
longitude:
|
||||||
|
type: number
|
||||||
|
description: Longitude of your location
|
||||||
|
|
||||||
|
elevation:
|
||||||
|
type: number
|
||||||
|
description: Elevation in meters
|
||||||
|
|
||||||
|
unit_system:
|
||||||
|
type: string
|
||||||
|
enum: [metric, imperial, us_customary]
|
||||||
|
description: Unit system to use
|
||||||
|
|
||||||
|
temperature_unit:
|
||||||
|
type: string
|
||||||
|
enum: [C, F]
|
||||||
|
description: Temperature unit (overrides unit_system)
|
||||||
|
|
||||||
|
time_zone:
|
||||||
|
type: string
|
||||||
|
description: Time zone (e.g., Europe/Berlin)
|
||||||
|
|
||||||
|
currency:
|
||||||
|
type: string
|
||||||
|
description: Currency code (e.g., EUR, USD)
|
||||||
|
|
||||||
|
country:
|
||||||
|
type: string
|
||||||
|
description: Country code (ISO 3166-1 alpha-2, e.g., DE, US)
|
||||||
|
|
||||||
|
language:
|
||||||
|
type: string
|
||||||
|
description: Language code (e.g., en, de)
|
||||||
|
|
||||||
|
internal_url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
description: Internal URL for Home Assistant
|
||||||
|
|
||||||
|
external_url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
description: External URL for Home Assistant
|
||||||
|
|
||||||
|
allowlist_external_dirs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: List of directories that are allowed for external access
|
||||||
|
|
||||||
|
allowlist_external_urls:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
description: List of external URLs that are allowed
|
||||||
|
|
||||||
|
packages:
|
||||||
|
type: object
|
||||||
|
description: Split configuration into packages
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
customize:
|
||||||
|
type: object
|
||||||
|
description: Customize entities
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
customize_domain:
|
||||||
|
type: object
|
||||||
|
description: Customize all entities in a domain
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
customize_glob:
|
||||||
|
type: object
|
||||||
|
description: Customize entities using glob patterns
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
auth_providers:
|
||||||
|
type: array
|
||||||
|
description: Authentication providers
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
auth_mfa_modules:
|
||||||
|
type: array
|
||||||
|
description: Multi-factor authentication modules
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
debug:
|
||||||
|
type: boolean
|
||||||
|
description: Enable debug mode
|
||||||
|
|
||||||
|
media_dirs:
|
||||||
|
type: object
|
||||||
|
description: Media directories
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
default_config:
|
||||||
|
description: Load default integrations. Set to empty object {} to include default_config.
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
# Common integrations
|
||||||
|
http:
|
||||||
|
description: HTTP integration configuration (https://www.home-assistant.io/integrations/http/)
|
||||||
|
type: [object, "null"]
|
||||||
|
properties:
|
||||||
|
server_host:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
format: ipv4
|
||||||
|
- type: string
|
||||||
|
format: ipv6
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Host to bind to (e.g., 0.0.0.0 for all interfaces)
|
||||||
|
|
||||||
|
server_port:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
maximum: 65535
|
||||||
|
description: Port to bind to
|
||||||
|
|
||||||
|
base_url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
description: Base URL for external access (deprecated, use homeassistant.external_url)
|
||||||
|
|
||||||
|
ssl_certificate:
|
||||||
|
type: string
|
||||||
|
description: Path to SSL certificate
|
||||||
|
|
||||||
|
ssl_key:
|
||||||
|
type: string
|
||||||
|
description: Path to SSL private key
|
||||||
|
|
||||||
|
cors_allowed_origins:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: List of allowed CORS origins
|
||||||
|
|
||||||
|
use_x_forwarded_for:
|
||||||
|
type: boolean
|
||||||
|
description: Enable X-Forwarded-For header processing
|
||||||
|
|
||||||
|
trusted_proxies:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: List of trusted proxy IP addresses
|
||||||
|
|
||||||
|
ip_ban_enabled:
|
||||||
|
type: boolean
|
||||||
|
description: Enable automatic IP banning
|
||||||
|
|
||||||
|
login_attempts_threshold:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
description: Number of failed login attempts before ban
|
||||||
|
|
||||||
|
api:
|
||||||
|
description: API integration
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
analytics:
|
||||||
|
description: Analytics configuration (https://www.home-assistant.io/integrations/analytics/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
logger:
|
||||||
|
type: object
|
||||||
|
description: Logger configuration (https://www.home-assistant.io/integrations/logger/)
|
||||||
|
properties:
|
||||||
|
default:
|
||||||
|
type: string
|
||||||
|
enum: [notset, debug, info, warning, error, critical]
|
||||||
|
description: Default log level for all components
|
||||||
|
|
||||||
|
logs:
|
||||||
|
type: object
|
||||||
|
description: Per-component log levels (e.g., homeassistant.components.http, custom_components.your_integration)
|
||||||
|
patternProperties:
|
||||||
|
"^(homeassistant\\.components\\.[a-z0-9_.]+|homeassistant\\.[a-z0-9_.]+|custom_components\\.[a-z0-9_.]+|[a-z0-9_.]+)$":
|
||||||
|
type: string
|
||||||
|
enum: [notset, debug, info, warning, error, critical]
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
filters:
|
||||||
|
type: object
|
||||||
|
description: Filter log messages
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
recorder:
|
||||||
|
description: Recorder (database) configuration (https://www.home-assistant.io/integrations/recorder/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
db_url:
|
||||||
|
type: string
|
||||||
|
description: Database URL (e.g., sqlite:///path/to/file.db, postgresql://...)
|
||||||
|
format: uri
|
||||||
|
|
||||||
|
purge_keep_days:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
description: Number of days to keep history
|
||||||
|
|
||||||
|
commit_interval:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
description: Seconds between database commits
|
||||||
|
|
||||||
|
auto_purge:
|
||||||
|
type: boolean
|
||||||
|
description: Automatically purge old data
|
||||||
|
|
||||||
|
auto_repack:
|
||||||
|
type: boolean
|
||||||
|
description: Automatically repack database (SQLite only)
|
||||||
|
|
||||||
|
exclude:
|
||||||
|
type: object
|
||||||
|
description: Exclude entities/domains from recording
|
||||||
|
properties:
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Domain names to exclude (e.g., sun, backup)
|
||||||
|
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Specific entities to exclude
|
||||||
|
|
||||||
|
entity_globs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Entity glob patterns to exclude (e.g., sensor.time*)
|
||||||
|
|
||||||
|
event_types:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Event types to exclude (e.g., call_service)
|
||||||
|
|
||||||
|
include:
|
||||||
|
type: object
|
||||||
|
description: Include only specific entities/domains
|
||||||
|
properties:
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Domain names to include
|
||||||
|
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Specific entities to include
|
||||||
|
|
||||||
|
entity_globs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Entity glob patterns to include
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
history:
|
||||||
|
description: History configuration (https://www.home-assistant.io/integrations/history/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
exclude:
|
||||||
|
type: object
|
||||||
|
description: Exclude entities from history
|
||||||
|
properties:
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entity_globs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
include:
|
||||||
|
type: object
|
||||||
|
description: Include only specific entities in history
|
||||||
|
properties:
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entity_globs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
logbook:
|
||||||
|
description: Logbook configuration (https://www.home-assistant.io/integrations/logbook/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
exclude:
|
||||||
|
type: object
|
||||||
|
description: Exclude entities from logbook
|
||||||
|
properties:
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entity_globs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
include:
|
||||||
|
type: object
|
||||||
|
description: Include only specific entities in logbook
|
||||||
|
properties:
|
||||||
|
domains:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
entity_globs:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
description: Frontend configuration (https://www.home-assistant.io/integrations/frontend/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
themes:
|
||||||
|
type: object
|
||||||
|
description: Custom themes
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
extra_module_url:
|
||||||
|
type: array
|
||||||
|
description: Additional JavaScript modules to load
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
|
||||||
|
extra_js_url_es5:
|
||||||
|
type: array
|
||||||
|
description: Additional ES5 JavaScript modules
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
|
||||||
|
development_repo:
|
||||||
|
type: string
|
||||||
|
description: Path to frontend development repository
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
config:
|
||||||
|
description: Configuration panel
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
map:
|
||||||
|
description: Map panel
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
sun:
|
||||||
|
description: Sun integration
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
system_health:
|
||||||
|
description: System health integration
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
mobile_app:
|
||||||
|
description: Mobile app integration (https://www.home-assistant.io/integrations/mobile_app/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
# Development integrations
|
||||||
|
debugpy:
|
||||||
|
description: Python debugger integration for development (https://www.home-assistant.io/integrations/debugpy/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
start:
|
||||||
|
type: boolean
|
||||||
|
description: Auto-start debugger on Home Assistant start
|
||||||
|
wait:
|
||||||
|
type: boolean
|
||||||
|
description: Wait for debugger to attach before continuing
|
||||||
|
port:
|
||||||
|
type: integer
|
||||||
|
minimum: 1
|
||||||
|
maximum: 65535
|
||||||
|
description: Port for debugger
|
||||||
|
host:
|
||||||
|
type: string
|
||||||
|
description: Host to bind debugger to
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
webhook:
|
||||||
|
description: Webhook integration (https://www.home-assistant.io/integrations/webhook/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
my:
|
||||||
|
description: My Home Assistant integration (https://www.home-assistant.io/integrations/my/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
additionalProperties: false
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
conversation:
|
||||||
|
description: Conversation/voice assistant integration (https://www.home-assistant.io/integrations/conversation/)
|
||||||
|
oneOf:
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
intents:
|
||||||
|
type: object
|
||||||
|
description: Custom conversation intents
|
||||||
|
additionalProperties: true
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
person:
|
||||||
|
type: array
|
||||||
|
description: Person configuration
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
zone:
|
||||||
|
type: array
|
||||||
|
description: Zone configuration
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
automation:
|
||||||
|
description: Automation configuration (https://www.home-assistant.io/integrations/automation/)
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
pattern: "^!include"
|
||||||
|
description: Include from external file (e.g., !include automations.yaml)
|
||||||
|
- type: array
|
||||||
|
description: List of automations
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
- type: object
|
||||||
|
description: Named automations
|
||||||
|
additionalProperties: true
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
script:
|
||||||
|
description: Script configuration (https://www.home-assistant.io/integrations/script/)
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
pattern: "^!include"
|
||||||
|
description: Include from external file (e.g., !include scripts.yaml)
|
||||||
|
- type: object
|
||||||
|
description: Named scripts
|
||||||
|
additionalProperties: true
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
scene:
|
||||||
|
description: Scene configuration (https://www.home-assistant.io/integrations/scene/)
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
pattern: "^!include"
|
||||||
|
description: Include from external file (e.g., !include scenes.yaml)
|
||||||
|
- type: array
|
||||||
|
description: List of scenes
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
- type: object
|
||||||
|
description: Named scenes
|
||||||
|
additionalProperties: true
|
||||||
|
- type: "null"
|
||||||
|
|
||||||
|
input_boolean:
|
||||||
|
type: object
|
||||||
|
description: Input boolean helpers
|
||||||
|
|
||||||
|
input_number:
|
||||||
|
type: object
|
||||||
|
description: Input number helpers
|
||||||
|
|
||||||
|
input_datetime:
|
||||||
|
type: object
|
||||||
|
description: Input datetime helpers
|
||||||
|
|
||||||
|
input_text:
|
||||||
|
type: object
|
||||||
|
description: Input text helpers
|
||||||
|
|
||||||
|
input_select:
|
||||||
|
type: object
|
||||||
|
description: Input select helpers
|
||||||
|
|
||||||
|
input_button:
|
||||||
|
type: object
|
||||||
|
description: Input button helpers
|
||||||
|
|
||||||
|
counter:
|
||||||
|
type: object
|
||||||
|
description: Counter helpers
|
||||||
|
|
||||||
|
timer:
|
||||||
|
type: object
|
||||||
|
description: Timer helpers
|
||||||
|
|
||||||
|
group:
|
||||||
|
type: object
|
||||||
|
description: Group configuration
|
||||||
|
|
||||||
|
template:
|
||||||
|
type: array
|
||||||
|
description: Template entities
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
# Allow any integration not explicitly defined
|
||||||
|
additionalProperties: true
|
||||||
611
schemas/yaml/services_schema.yaml
Normal file
611
schemas/yaml/services_schema.yaml
Normal file
|
|
@ -0,0 +1,611 @@
|
||||||
|
# YAML Schema for Home Assistant services.yaml
|
||||||
|
# Based on: https://developers.home-assistant.io/docs/dev_101_services/
|
||||||
|
$schema: http://json-schema.org/draft-07/schema#
|
||||||
|
title: Home Assistant Service Actions Definition
|
||||||
|
description: Schema for Home Assistant services.yaml file that defines service actions for custom integrations
|
||||||
|
|
||||||
|
type: object
|
||||||
|
patternProperties:
|
||||||
|
"^[a-z][a-z0-9_]*$":
|
||||||
|
type: object
|
||||||
|
description: Service action definition (key is the service action name)
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: User-visible name of the service action (translated via strings.json)
|
||||||
|
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
description: User-visible description of the service action (translated via strings.json). Supports Markdown.
|
||||||
|
|
||||||
|
target:
|
||||||
|
type: object
|
||||||
|
description: Allows users to specify entities by entity, device, or area. Do NOT define entity_id in fields if target is specified.
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
entity:
|
||||||
|
type: object
|
||||||
|
description: Entity selector configuration
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
domain:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Filter entities by domain(s)
|
||||||
|
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
description: Filter entities by integration
|
||||||
|
|
||||||
|
device_class:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: Filter entities by device class(es)
|
||||||
|
|
||||||
|
supported_features:
|
||||||
|
type: array
|
||||||
|
description: Filter by required supported features. Each item is either a single feature or a list of features (AND logic).
|
||||||
|
items:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
|
||||||
|
device:
|
||||||
|
type: object
|
||||||
|
description: Device selector configuration
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
description: Filter devices by integration
|
||||||
|
|
||||||
|
manufacturer:
|
||||||
|
type: string
|
||||||
|
description: Filter devices by manufacturer
|
||||||
|
|
||||||
|
model:
|
||||||
|
type: string
|
||||||
|
description: Filter devices by model
|
||||||
|
|
||||||
|
area:
|
||||||
|
type: object
|
||||||
|
description: Area selector configuration
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
fields:
|
||||||
|
type: object
|
||||||
|
description: Input fields for the service action
|
||||||
|
additionalProperties: false
|
||||||
|
patternProperties:
|
||||||
|
"^[a-z][a-z0-9_]*$":
|
||||||
|
type: object
|
||||||
|
description: Service action field definition
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description: User-visible field name (translated via strings.json)
|
||||||
|
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
description: User-visible field description (translated via strings.json)
|
||||||
|
|
||||||
|
required:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
description: Whether the field is required
|
||||||
|
|
||||||
|
advanced:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
description: Advanced fields are only shown when advanced mode is enabled
|
||||||
|
|
||||||
|
example:
|
||||||
|
description: Example value for this field
|
||||||
|
|
||||||
|
default:
|
||||||
|
description: Default field value if not provided
|
||||||
|
|
||||||
|
selector:
|
||||||
|
type: object
|
||||||
|
description: Selector to control the input UI (https://www.home-assistant.io/docs/blueprint/selectors/)
|
||||||
|
additionalProperties: true
|
||||||
|
properties:
|
||||||
|
# Common selectors
|
||||||
|
action:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Action sequence selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
boolean:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Toggle switch selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
condition:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Condition selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
entity:
|
||||||
|
type: object
|
||||||
|
description: Entity selector with filtering options
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
domain:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
device_class:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
supported_features:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
exclude_entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
include_entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
device:
|
||||||
|
type: object
|
||||||
|
description: Device selector with filtering options
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
manufacturer:
|
||||||
|
type: string
|
||||||
|
model:
|
||||||
|
type: string
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
entity:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
domain:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
device_class:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
area:
|
||||||
|
type: object
|
||||||
|
description: Area selector with filtering options
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
entity:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
domain:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
device:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
manufacturer:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
target:
|
||||||
|
type: object
|
||||||
|
description: Target selector (entity/device/area combined)
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
entity:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
domain:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
device_class:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
number:
|
||||||
|
type: object
|
||||||
|
description: Number input selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
min:
|
||||||
|
type: number
|
||||||
|
max:
|
||||||
|
type: number
|
||||||
|
step:
|
||||||
|
oneOf:
|
||||||
|
- type: number
|
||||||
|
- type: string
|
||||||
|
enum: ["any"]
|
||||||
|
unit_of_measurement:
|
||||||
|
type: string
|
||||||
|
mode:
|
||||||
|
type: string
|
||||||
|
enum: ["box", "slider"]
|
||||||
|
|
||||||
|
text:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Text input selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
multiline:
|
||||||
|
type: boolean
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
[
|
||||||
|
"color",
|
||||||
|
"date",
|
||||||
|
"datetime-local",
|
||||||
|
"email",
|
||||||
|
"month",
|
||||||
|
"number",
|
||||||
|
"password",
|
||||||
|
"search",
|
||||||
|
"tel",
|
||||||
|
"text",
|
||||||
|
"time",
|
||||||
|
"url",
|
||||||
|
"week",
|
||||||
|
]
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
prefix:
|
||||||
|
type: string
|
||||||
|
suffix:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
select:
|
||||||
|
type: object
|
||||||
|
description: Selection dropdown/list selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
options:
|
||||||
|
oneOf:
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
- type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
value:
|
||||||
|
type: string
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
custom_value:
|
||||||
|
type: boolean
|
||||||
|
mode:
|
||||||
|
type: string
|
||||||
|
enum: ["list", "dropdown"]
|
||||||
|
sort:
|
||||||
|
type: boolean
|
||||||
|
translation_key:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- options
|
||||||
|
|
||||||
|
time:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Time picker selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
date:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Date picker selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
datetime:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Date & time picker selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
duration:
|
||||||
|
type: object
|
||||||
|
description: Duration selector (days, hours, minutes, seconds)
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
enable_day:
|
||||||
|
type: boolean
|
||||||
|
enable_millisecond:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
color_temp:
|
||||||
|
type: object
|
||||||
|
description: Color temperature selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
unit:
|
||||||
|
type: string
|
||||||
|
enum: ["kelvin", "mired"]
|
||||||
|
min:
|
||||||
|
type: integer
|
||||||
|
max:
|
||||||
|
type: integer
|
||||||
|
|
||||||
|
color_rgb:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: RGB color picker selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
icon:
|
||||||
|
type: object
|
||||||
|
description: Icon picker selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
placeholder:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
template:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Jinja2 template input selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
object:
|
||||||
|
type: object
|
||||||
|
description: YAML object input selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
type: [object, "null"]
|
||||||
|
description: Trigger configuration selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
location:
|
||||||
|
type: object
|
||||||
|
description: Location/coordinates picker selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
radius:
|
||||||
|
type: boolean
|
||||||
|
icon:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
media:
|
||||||
|
type: object
|
||||||
|
description: Media picker selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
accept:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
theme:
|
||||||
|
type: object
|
||||||
|
description: Theme selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
include_default:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
# Additional selectors (simplified)
|
||||||
|
addon:
|
||||||
|
type: object
|
||||||
|
description: Add-on selector (HAOS only)
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
assist_pipeline:
|
||||||
|
type: object
|
||||||
|
description: Assist pipeline selector
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
attribute:
|
||||||
|
type: object
|
||||||
|
description: Attribute selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
entity_id:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- entity_id
|
||||||
|
|
||||||
|
backup_location:
|
||||||
|
type: object
|
||||||
|
description: Backup location selector (HAOS only)
|
||||||
|
additionalProperties: true
|
||||||
|
|
||||||
|
config_entry:
|
||||||
|
type: object
|
||||||
|
description: Configuration entry selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
integration:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
constant:
|
||||||
|
type: object
|
||||||
|
description: Constant value selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
value:
|
||||||
|
description: The constant value
|
||||||
|
label:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- value
|
||||||
|
|
||||||
|
conversation_agent:
|
||||||
|
type: object
|
||||||
|
description: Conversation agent selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
language:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
country:
|
||||||
|
type: object
|
||||||
|
description: Country selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
countries:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
no_sort:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
floor:
|
||||||
|
type: object
|
||||||
|
description: Floor selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
label:
|
||||||
|
type: object
|
||||||
|
description: Label selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
language:
|
||||||
|
type: object
|
||||||
|
description: Language selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
languages:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
native_name:
|
||||||
|
type: boolean
|
||||||
|
no_sort:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
qr_code:
|
||||||
|
type: object
|
||||||
|
description: QR code display (no return value)
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
data:
|
||||||
|
description: Data to encode in QR code
|
||||||
|
scale:
|
||||||
|
type: integer
|
||||||
|
error_correction_level:
|
||||||
|
type: string
|
||||||
|
enum: ["low", "medium", "quartile", "high"]
|
||||||
|
required:
|
||||||
|
- data
|
||||||
|
|
||||||
|
state:
|
||||||
|
type: object
|
||||||
|
description: State selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
entity_id:
|
||||||
|
type: string
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
statistic:
|
||||||
|
type: object
|
||||||
|
description: Statistic selector
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
multiple:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
filter:
|
||||||
|
type: object
|
||||||
|
description: Filter to show field only if selected entities match criteria
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
supported_features:
|
||||||
|
type: array
|
||||||
|
description: Show field if at least one selected entity supports at least one listed feature
|
||||||
|
items:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
|
||||||
|
attribute:
|
||||||
|
type: object
|
||||||
|
description: Show field if at least one selected entity's attribute matches one of the listed values
|
||||||
|
patternProperties:
|
||||||
|
".*":
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
oneOf:
|
||||||
|
- type: string
|
||||||
|
- type: number
|
||||||
|
- type: boolean
|
||||||
|
oneOf:
|
||||||
|
- required: [supported_features]
|
||||||
|
- required: [attribute]
|
||||||
|
|
||||||
|
# Collapsible sections for grouping fields (e.g., advanced_fields)
|
||||||
|
advanced_fields:
|
||||||
|
type: object
|
||||||
|
description: Collapsible section for advanced fields
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
collapsed:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
description: Whether the section is initially collapsed
|
||||||
|
|
||||||
|
fields:
|
||||||
|
type: object
|
||||||
|
description: Advanced fields in this section
|
||||||
|
additionalProperties: false
|
||||||
|
patternProperties:
|
||||||
|
"^[a-z][a-z0-9_]*$":
|
||||||
|
$ref: "#/patternProperties/^[a-z][a-z0-9_]*$/properties/fields/patternProperties/^[a-z][a-z0-9_]*$"
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
Loading…
Reference in a new issue