Skip to content

2026-09-12: The Color That Stayed

Pencil sketch on a dark textured background of an open-concept kitchen and dining room bathed in warm tungsten filament light, 2000K warm incandescent glow over dining table and kitchen island, faint copper line-art circuits connecting a small green automation box on a shelf to warm pendant lights, a cat resting quietly on a stool, cozy architectural drawing style

The kitchen lights finally had the right tone. Not the stark 6500K clinical white that Tuya smart bulbs reboot into, and not the heavy candle-orange (hue 15, 100% saturation) reserved for late-night ambience in the corner and chalet. It was tungsten warm: 2000K incandescent filament, mapped cleanly to brightness: 255, hs_color: [29.0, 93.0], and rgb_color: [255, 132, 18] (xy: [0.603, 0.377]).

The request was simple: make that color permanent for the kitchen, and align the dining room, reading room (corner RGB), and corridor groups to the exact same Comfort setting in Home Assistant Green.

In Home Assistant, “permanent” is never one setting. Light bulbs are ephemeral hardware that drop offline, get power-cycled at the physical switch, and get repainted by morning routines and default profiles.

Forensic inspection of the HA Green appliance (10.0.0.3:8123) revealed why light tones kept drifting:

  1. scenes.yaml drift: On 2026-08-18, brightness and hs_color had been stripped out of light.kitchen in scene.bonjour_montreal, leaving it bare (state: true). Furthermore, light.dining_room was not included in the morning scene at all.
  2. The partial Tuya script: In scripts.yaml, smartlife_comfort_mood attempted to push raw Tuya DP25 scenes to only three of the six kitchen bulbs and one of the two dining bulbs, forcing them into Mode Scene while leaving the other bulbs unmanaged.
  3. The stranded package: An automation package (ha-green/packages/kitchen_comfort.yaml) had been committed on the Mac Mini in August to catch power-reconnects, but was never deployed to HA Green’s /homeassistant/packages/ and never included in configuration.yaml.
  4. Missing default profile: Without /homeassistant/light_profiles.csv, any unparameterized light.turn_on call defaulted to the bulb firmware’s power-on memory.

To guarantee that Kitchen, Dining Room, Reading, and Corridor stay at the desired tungsten warm look across any condition, we landed a four-tier defense directly on HA Green and bridged to Sanctum:

Deploys packages/kitchen_comfort.yaml loaded via configuration.yaml. Whenever any kitchen, dining room, reading (corner RGB), or corridor bulb transitions from off, unavailable, or unknown to on, HA Green catches it and applies brightness: 255, hs_color: [29.0, 93.0] after a 2-second settle delay.

Updated /homeassistant/light_profiles.csv mapping light.kitchen.default, light.dining_room.default, light.reading.default, light.corner_rgb.default, light.corridor.default, and all thirty constituent bulb entities to x=0.603, y=0.377, brightness=255. Any call to light.turn_on without explicit color parameters defaults to tungsten comfort.

  • Updated scene.bonjour_montreal in scenes.yaml to explicitly turn on both light.kitchen and light.dining_room at brightness: 255, hs_color: [29.0, 93.0].
  • Rewrote script.smartlife_comfort_mood in scripts.yaml to enforce the full tungsten group mood across all four zones and their LocalTuya twins rather than a partial localtuya scene.
  • Added light.reading group alias in configuration.yaml.

Updated haus.sanctum.ha-green-bridge on the Mac Mini (bin/ha-green-bridge.py) to include light.kitchen, light.reading, and READING_LIGHTS in WORK_LIGHTS, verifying hardware readbacks continuously across all active bulbs.

All configs on HA Green were validated via hag-core.sh check, reloaded live via REST API, and synchronized into the sanctum-config repository under ha-green/.

Live state verification on HA Green confirms:

  • light.kitchen: state=on bri=255 hs=[29.0, 93.0] rgb=[255, 132, 18]
  • light.dining_room: state=on bri=255 hs=[29.0, 93.0] rgb=[255, 132, 18]
  • light.reading / light.corner_rgb: mapped to Comfort profile in package, profiles, and bridge.
  • light.corridor: mapped to Comfort profile in package, profiles, and bridge.