Nishi IoT Hub — Control Panel

A sovereign, LAN-first home hub built 100% on the Nishi stack — no cloud round-trip, no Python, no hand-written JS/HTML. Replaces the Smart Life / Kasa apps to kill the blinking-lights / re-pair / duplicate failures. This page was emitted by the organ nx_iot_page.

Generated LIVE at epoch 1781968463 — device controls below are rendered from the capability model (nx_iot_capability) at render time, not typed in.

Devices

Each card's controls are chosen by the hub from the device's capability flags — a switch gets a toggle, a colour bulb gets brightness + colour + warmth + scenes. (Demo fixtures; live actuation arrives behind operator-only sign-in next.)

Kitchen Switch
Kitchen · Kasa HS210
caps ["on_off"]
Living Room Lamp
Living Room · Kasa KL130 colour
caps ["on_off","brightness","color","color_temp","scene"]
Hallway Dimmer
Hallway · dimmer
caps ["on_off","brightness"]
Patio Plug
Patio · energy plug
⚡ energy
caps ["on_off","energy"]
Bedroom Bulb
Bedroom · tunable white
caps ["on_off","brightness","color_temp"]

Auto-pair — no more manual re-pairing

When a fixture drops to its open pairing mode, the hub re-onboards it on its own — the state machine nx_iot_provision_softap drives it end to end:

scanjoin APpush credsrejoin LANverifyanchordone

Never-brick by construction: the hub only ever pushes a reversible Wi-Fi credential — it has no firmware-write action at all, and the safety classifier defaults any un-reviewed action to blocked. A rejected push just leaves the device safe in pairing mode.

Self-healing — the blink loop, closed

The watchdog (nx_iot_watchdog) watches each device and, after a bounded run of missed heartbeats, declares it down; if it reverts to pairing it auto-re-provisions and re-anchors — same identity, no duplicate, no human:

healthymissedunreachablerecoveringhealthy

Where it beats the app (measured, not waved)

AxisSmart Life / Kasa appNishi hub
Duplicate device rows on re-pairone per re-pair0 — anchored by hardware id
Manual steps to re-pair a dropped lightseveral, by hand0 — auto re-provision
Works with the internet downno (cloud)yes — LAN-only
Brick risk on provisioningtrust the vendornone by construction

Each row is a property a sovereign gate proves (anchor duplicates_prevented, watchdog recover_count, provision never-brick alphabet) — not a marketing claim.

Backbone — from the hardware rung up

OrganRoleGate
nx_iot_anchorWHO — stable identity, no duplicates✓ green
nx_iot_classifyPROBE — vendor router✓ green
nx_iot_capabilityWHAT — which controls to show✓ green
nx_iot_local_kasaHOW — Kasa LAN protocol✓ green
nx_iot_provision_softapauto-pair state machine✓ green
nx_iot_watchdogself-heal / blink loop✓ green
nx_iot_pagethis control panel✓ live

Honest scope: the controls are a live UI we iterate on; they don't actuate yet (operator-only sign-in + the Windows-native radio runner are the next rungs). The logic above is gate-proven offline; live LAN control follows.