Convert mode definitions from flat to nested JSON schema: - Embed LED colors in mode settings (remove separate color mapping) - Add behavior, manual_control, and led_color to top level - Nest AL settings in al_config object for service validation - Reduce from 11 to 8 essential modes (remove Reading, Homework, Play) Modes now use nested structure to avoid AL service validation errors while maintaining extensibility for different behavior types.
85 lines
4.2 KiB
YAML
85 lines
4.2 KiB
YAML
# packages/adaptive_lighting_global.yaml
|
|
#
|
|
# Global constants for Adaptive Lighting Mode System
|
|
# This file is shared across all rooms and should be version controlled.
|
|
#
|
|
# To use: Place in config/packages/ directory
|
|
# Enable packages in configuration.yaml:
|
|
# homeassistant:
|
|
# packages: !include_dir_named packages/
|
|
|
|
# =============================================================================
|
|
# MODE SETTINGS DEFINITIONS
|
|
# =============================================================================
|
|
# Each mode has its own input_text helper with nested JSON schema
|
|
# Schema: {"behavior": "adaptive_lighting"|"scene"|"script",
|
|
# "manual_control": true|false,
|
|
# "led_color": 0-255,
|
|
# "al_config": {AL settings dict}}
|
|
# Room automations use convention-based lookup to apply settings
|
|
# =============================================================================
|
|
|
|
input_text:
|
|
# Adaptive mode - uses default AL configuration
|
|
adaptive_lighting_settings_adaptive:
|
|
name: "AL Settings: Adaptive"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":170,"al_config":{"use_defaults":"configuration"}}'
|
|
|
|
# Relaxing mode - dim, warm white
|
|
adaptive_lighting_settings_relaxing:
|
|
name: "AL Settings: Relaxing"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":21,"al_config":{"min_brightness":20,"max_brightness":40,"min_color_temp":2000,"max_color_temp":2500,"transition":5}}'
|
|
|
|
# Sleep mode - very dim red/amber
|
|
adaptive_lighting_settings_sleep:
|
|
name: "AL Settings: Sleep"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":0,"al_config":{"min_brightness":1,"max_brightness":5,"min_color_temp":2000,"sleep_rgb_color":[255,50,0],"transition":2}}'
|
|
|
|
# Theater mode - dim, cool for movies
|
|
adaptive_lighting_settings_theater:
|
|
name: "AL Settings: Theater"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":127,"al_config":{"min_brightness":5,"max_brightness":20,"min_color_temp":3000,"max_color_temp":4000,"transition":3}}'
|
|
|
|
# Party mode - bright, dynamic for socializing
|
|
adaptive_lighting_settings_party:
|
|
name: "AL Settings: Party"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":234,"al_config":{"min_brightness":60,"max_brightness":90,"min_color_temp":3500,"max_color_temp":4500,"transition":1}}'
|
|
|
|
# Cooking mode - bright, cool task lighting
|
|
adaptive_lighting_settings_cooking:
|
|
name: "AL Settings: Cooking"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":42,"al_config":{"min_brightness":90,"max_brightness":100,"min_color_temp":4500,"max_color_temp":5500,"transition":1}}'
|
|
|
|
# Dining mode - medium, warm for meals
|
|
adaptive_lighting_settings_dining:
|
|
name: "AL Settings: Dining"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":21,"al_config":{"min_brightness":40,"max_brightness":70,"min_color_temp":2500,"max_color_temp":3500,"transition":3}}'
|
|
|
|
# Cleanup mode - bright, standard for cleaning
|
|
adaptive_lighting_settings_cleanup:
|
|
name: "AL Settings: Cleanup"
|
|
max: 255
|
|
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":170,"al_config":{"min_brightness":80,"max_brightness":100,"min_color_temp":4000,"max_color_temp":5000,"transition":1}}'
|
|
|
|
# =============================================================================
|
|
# USAGE NOTES
|
|
# =============================================================================
|
|
# To access mode settings in blueprints/automations:
|
|
# {% set mode = states('input_select.room_lighting_mode') %}
|
|
# {% set settings_entity = 'input_text.adaptive_lighting_settings_' ~ (mode | lower | replace(' ', '_')) %}
|
|
# {% set settings = states(settings_entity) | from_json %}
|
|
# {{ settings.behavior }} # "adaptive_lighting", "scene", "script"
|
|
# {{ settings.manual_control }} # true/false - controls AL manual control state
|
|
# {{ settings.led_color }} # 0-255 hue value for LED feedback
|
|
# {{ settings.al_config }} # Dict to pass to adaptive_lighting.change_switch_settings
|
|
#
|
|
# To add custom modes:
|
|
# See ADDING_MODES.md for complete tutorial
|