Add ADDING_MODES.md tutorial covering: - UI-created modes (recommended) and package-defined modes - Complete schema reference with nested al_config - Behavior types (adaptive_lighting, scene, script) - Manual control support and advanced examples Update all documentation to reflect: - Zero YAML editing for room setup (UI-driven workflow) - Convention-based mode lookup pattern - Pure blueprint architecture (3 core + 3 optional blueprints) - Extensibility via helpers instead of template copying
8.9 KiB
Package Setup Guide
Overview
This guide covers installing the global mode definitions package only. Room configuration is done entirely via Home Assistant UI - see ROOM_CONFIGURATION_GUIDE.md for the UI-driven room setup workflow.
Architecture
The Adaptive Lighting Mode System uses a pure blueprint architecture:
- Global package: Provides shared mode definitions (8 essential modes) as input_text helpers
- Blueprints: Provide automation logic for mode application and weekend mode schedules
- UI-created helpers: Users create room-specific helpers (dropdowns, toggles) via Settings → Helpers
- UI-created automations: Users create automations from blueprints via Settings → Automations
Key principle: Zero YAML editing required for room setup. The global package is the only YAML file you need to install.
What Are Packages?
Packages allow you to organize Home Assistant configuration into multiple YAML files instead of one giant configuration.yaml. Each package file can contain automations, helpers, scripts, and other entities related to a specific feature.
Benefits:
- Organize configuration by feature
- Version control specific areas independently
- Share and reuse configurations
- Keep
configuration.yamlclean and minimal
Prerequisites
- Home Assistant installed and running
- SSH or file editor access to your HA configuration directory
- Adaptive Lighting integration installed via HACS
- Git installed (optional, for version control)
Installation Steps
Step 1: Import Blueprints
1.1 Navigate to blueprints
Settings → Automations & Scenes → Blueprints → Import Blueprint
1.2 Import the three mode system blueprints
Import these URLs one at a time:
https://git.johnogle.info/johno/home-assistant-blueprints/raw/branch/main/blueprints/automation/apply_lighting_mode.yaml
https://git.johnogle.info/johno/home-assistant-blueprints/raw/branch/main/blueprints/automation/weekend_mode_schedule.yaml
https://git.johnogle.info/johno/home-assistant-blueprints/raw/branch/main/blueprints/automation/weekend_mode_apply_settings.yaml
Optional blueprints (for Inovelli switches and presence-based automation):
https://git.johnogle.info/johno/home-assistant-blueprints/raw/branch/main/blueprints/automation/inovelli_mode_cycling.yaml
https://git.johnogle.info/johno/home-assistant-blueprints/raw/branch/main/blueprints/automation/inovelli_button_actions.yaml
https://git.johnogle.info/johno/home-assistant-blueprints/raw/branch/main/blueprints/automation/presence_mode_reset.yaml
1.3 Verify blueprints imported
Settings → Automations & Scenes → Blueprints
You should see:
- Apply Lighting Mode Settings
- Weekend Mode Schedule
- Weekend Mode Apply Settings
- (Optional) Inovelli Mode Cycling, Inovelli Button Actions, Presence Mode Reset
Step 2: Enable Packages in Home Assistant
2.1 Edit your configuration.yaml
Add this line to enable packages:
homeassistant:
packages: !include_dir_named packages/
2.2 Create the packages directory
SSH into your Home Assistant instance or use File Editor add-on:
cd /config
mkdir packages
2.3 Restart Home Assistant
Settings → System → Restart Home Assistant
Step 3: Install Global Package
3.1 Copy the global package
Download or copy packages/adaptive_lighting_global.yaml from this repository to your /config/packages/ directory.
3.2 Reload YAML configuration
Developer Tools → YAML → Reload all YAML configuration
3.3 Verify mode entities exist
Developer Tools → States
Search for adaptive_lighting_settings - you should see 8 entities:
input_text.adaptive_lighting_settings_adaptiveinput_text.adaptive_lighting_settings_relaxinginput_text.adaptive_lighting_settings_sleepinput_text.adaptive_lighting_settings_theaterinput_text.adaptive_lighting_settings_partyinput_text.adaptive_lighting_settings_cookinginput_text.adaptive_lighting_settings_dininginput_text.adaptive_lighting_settings_cleanup
Step 4: Configure Your First Room
This is done entirely via the UI - no YAML editing required!
See ROOM_CONFIGURATION_GUIDE.md for complete UI-driven room setup instructions.
Quick summary:
- Create mode selector dropdown via Settings → Helpers
- Create automation from "Apply Lighting Mode Settings" blueprint
- Test mode switching via UI
- Optionally add weekend mode automations
Mode Customization
Understanding the Mode Schema
Each mode in the global package uses a nested JSON schema:
{
"behavior": "adaptive_lighting",
"manual_control": false,
"led_color": 170,
"al_config": {
"min_brightness": 20,
"max_brightness": 80,
"min_color_temp": 2000,
"max_color_temp": 4000,
"transition": 5
}
}
Top-level fields:
behavior: "adaptive_lighting", "scene", or "script" - determines how the mode behavesmanual_control:trueorfalse- iftrue, pauses Adaptive Lighting for this modeled_color: 0-255 hue value for LED feedback on Inovelli switchesal_config: Nested object with Adaptive Lighting settings
AL config fields (only used for "adaptive_lighting" behavior):
use_defaults: "configuration" or "current"min_brightness,max_brightness: 1-100min_color_temp,max_color_temp: Kelvin values (2000-6500)sleep_rgb_color: RGB array like[255, 50, 0]transition: Seconds
Editing Mode Settings
To customize a mode, edit packages/adaptive_lighting_global.yaml and modify the initial value:
Example: Make "Relaxing" mode dimmer
adaptive_lighting_settings_relaxing:
name: "AL Settings: Relaxing"
max: 255
initial: '{"behavior":"adaptive_lighting","manual_control":false,"led_color":21,"al_config":{"min_brightness":10,"max_brightness":30,"min_color_temp":2000,"max_color_temp":2200,"transition":5}}'
After editing, reload YAML configuration (Developer Tools → YAML → Reload all YAML configuration).
Adding Custom Modes
See ADDING_MODES.md for complete tutorial on adding custom modes.
Two methods:
- UI-created modes (recommended): Create input_text helper via Settings → Helpers - no restart required
- Package-defined modes: Add to
adaptive_lighting_global.yaml- version controlled
Both methods work identically with the convention-based blueprint system.
Version Control Setup (Optional)
Initialize git repository
cd /config
git init
Create .gitignore
cat > .gitignore << 'EOF'
# Secrets and sensitive data
secrets.yaml
*.db
*.db-shm
*.db-wal
*.log
# Generated files
*.pyc
__pycache__/
.storage/
.cloud/
.google.token
# Add-on data
.ssh/
.vscode/
# Keep these version controlled:
# - packages/
# - automations.yaml (optional - UI automations are in .storage)
# - configuration.yaml
EOF
Commit initial setup
git add packages/ configuration.yaml
git commit -m "Initial adaptive lighting mode system setup"
Add remote (optional)
git remote add origin your-git-repo-url
git push -u origin main
Troubleshooting
Packages not loading
Symptom: Mode entities don't appear after reloading
Solutions:
- Check
configuration.yamlhas packages line:packages: !include_dir_named packages/ - Verify packages directory exists at
/config/packages/ - Check YAML syntax with a validator
- Look for errors in Settings → System → Logs
- Try restarting Home Assistant instead of just reloading YAML
Invalid JSON in mode settings
Symptom: Mode doesn't work or causes errors
Solutions:
- Verify JSON is valid using jsonlint.com
- Check for trailing commas (not allowed in JSON)
- Ensure all strings use double quotes, not single quotes
- Verify
al_configis a nested object, not at top level
Blueprints not appearing
Symptom: Blueprints don't show up after import
Solutions:
- Check for import errors in Settings → System → Logs
- Verify blueprint URLs are correct
- Try importing again
- Check YAML syntax of blueprint files if self-hosting
Mode entities exist but automations don't work
Symptom: Can see entities in States but mode switching does nothing
Solutions:
- Verify you created automation from "Apply Lighting Mode Settings" blueprint
- Check automation is enabled
- View automation traces: Settings → Automations → [your automation] → Traces
- Verify AL switch entity ID is correct in automation configuration
- Check mode selector entity ID matches in automation configuration
Next Steps
This package only provides mode definitions. To configure a room, see ROOM_CONFIGURATION_GUIDE.md for the UI-driven workflow.
Additional resources:
- ADDING_MODES.md - Tutorial for creating custom modes
- README.md - Main documentation and architecture overview
- Adaptive Lighting Integration Docs - Reference for AL settings