---
tags:
  - infrastructure
  - smart-home
  - home-assistant
  - wiz
updated: 2026-05-30
---

# Smart Home Lighting Control

Will's light bulbs are Philips/WiZ bulbs. They are managed through **two control paths**:

1. **Home Assistant** for the normal smart-home entity layer.
2. **Hermes local LAN scripts** for automation routines that need deterministic local control.

## Home Assistant

Home Assistant is reachable from Atlas/Hermes at `http://192.168.153.245:8080`.

As of 2026-05-30, Home Assistant exposes these WiZ entities:

| Purpose | Entity | Last checked state |
|---|---|---|
| Living room WiZ bulb | `light.wiz_rgbw_tunable_a601b8` | `off` |
| Living room effect speed | `number.wiz_rgbw_tunable_a601b8_effect_speed` | `unavailable` |
| Living room power sensor | `sensor.wiz_rgbw_tunable_a601b8_power` | `0.0` |
| Bedroom WiZ bulb | `light.wiz_rgbw_tunable_a6907c` | `unavailable` |
| Bedroom effect speed | `number.wiz_rgbw_tunable_a6907c_effect_speed` | `unavailable` |
| Bedroom power sensor | `sensor.wiz_rgbw_tunable_a6907c_power` | `unavailable` |

The `unavailable` bedroom state usually means Home Assistant cannot currently reach that bulb or the bulb is powered off/offline. It does not mean the entity is missing.

## Direct WiZ LAN control

The bulbs also support local WiZ UDP control on port `38899`. Hermes scripts use direct UDP for some routines because it is local, fast, and does not depend on Home Assistant service-call availability.

Known bulb IPs from the WiZ LAN setup:

| Bulb | IP | MAC / suffix | Notes |
|---|---:|---|---|
| Living room | `192.168.153.85` | `98:77:d5:a6:01:b8` / `a601b8` | Home Assistant entity: `light.wiz_rgbw_tunable_a601b8` |
| Bedroom | `192.168.153.234` | `98:77:d5:a6:90:7c` / `a6907c` | Home Assistant entity: `light.wiz_rgbw_tunable_a6907c` |

If direct commands fail, rediscover the bulbs before assuming the integration is broken; IPs may change unless DHCP reservations are present.

## Automation ownership

- [[Gentle Wake Routine]] uses direct WiZ UDP for the bedroom bulb and Hermes cron for scheduling.
- Weather/time adaptive lighting uses `~/.hermes/scripts/wiz_weather_lighting.py` and may also speak directly to the bulbs.
- Home Assistant remains the canonical visible smart-home layer for dashboards, state inspection, and service calls.

## Quick checks

Check Home Assistant WiZ entities:

```bash
python - <<'PY'
import os, urllib.request, json
url = os.environ['HOME_ASSISTANT_URL'].rstrip('/') + '/api/states'
req = urllib.request.Request(url, headers={
    'Authorization': 'Bearer ' + os.environ['HOME_ASSISTANT_TOKEN'],
    'Content-Type': 'application/json',
})
with urllib.request.urlopen(req, timeout=10) as r:
    states = json.load(r)
for ent in states:
    eid = ent.get('entity_id', '')
    if 'wiz' in eid.lower() or 'a601b8' in eid.lower() or 'a6907c' in eid.lower():
        print(eid, ent.get('state'), ent.get('attributes', {}).get('friendly_name'))
PY
```

Dry-run the Hermes lighting decision without changing bulbs:

```bash
~/.hermes/scripts/wiz_weather_lighting.py --dry-run --json
```

Apply the current Hermes lighting policy once:

```bash
~/.hermes/scripts/wiz_weather_lighting.py --json
```

## Operational note

When asked “are we using Home Assistant for the bulbs?”, the accurate answer is: **yes, Home Assistant has WiZ entities for them, but Hermes also controls the bulbs directly over local WiZ UDP for selected automations.**
