homeos/app/Livewire
HomeOS Bootstrap e3ad653582 feat(shelly): local HTTP/RPC transport — add by IP like Home Assistant
You were right that HA uses the Shelly LOCAL API, not MQTT. Adds that path
(user chose "both") — control + status over http://<ip>/rpc, no MQTT setup on
the device:
- ShellyRpc (POST /rpc), ShellyHttpDriver (Switch/Light.Set, Reboot).
- ShellyStatusApplier: one shared apply path (normalize + input roles +
  monotonic upsert + broadcast) reused by BOTH the MQTT ingest and the HTTP
  poll, so transports can't drift. IngestShellyMessage refactored onto it.
- ShellyLocalOnboarder: probe an IP → GetDeviceInfo/GetStatus → create an
  http-protocol device with its entities (reuses an MQTT-onboarded row by id,
  no duplicate). AssignDevice uses it when a discovered Shelly is reachable;
  falls back to MQTT-style if not.
- Manual "Gerät hinzufügen" modal (add by IP). shelly:poll scheduled every 10s
  + a re-poll after each command (PollShellyDevice) for near-live status.
  driverFor picks http vs mqtt by protocol.
- Normalizer now drops housekeeping components (sys/wifi/cloud/mqtt/ws/…) so
  GetStatus doesn't create junk entities.

6 ShellyHttpTest cases (Http::fake). Suite 68 green, 12/12 clean.
LIVE-VERIFIED against the real Shelly 1 Mini Gen3 at 10.10.30.78: onboarded
over local API (protocol http), entities switch:0 + input:0, kept online by the
10s poll — no MQTT configured on the device.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 09:48:35 +02:00
..
Addons feat(addons): installable integrations framework + Ring connect UI 2026-07-18 01:47:02 +02:00
Auth Phase 1: bootstrap — Docker stack, Laravel 13, design system, auth 2026-07-17 21:06:20 +02:00
Automations All sidebar tabs are real pages (zero console errors) 2026-07-18 00:16:16 +02:00
Concerns feat(ui): card layout replaces flat lists across the app 2026-07-18 08:32:01 +02:00
Devices feat(devices): auto-detect host IP, discovery dedup, delete + rescan 2026-07-18 09:34:07 +02:00
Discovery feat(devices): auto-detect host IP, discovery dedup, delete + rescan 2026-07-18 09:34:07 +02:00
Modals feat(shelly): local HTTP/RPC transport — add by IP like Home Assistant 2026-07-18 09:48:35 +02:00
Persons All sidebar tabs are real pages (zero console errors) 2026-07-18 00:16:16 +02:00
Rooms Rooms pages: index (per-room status) + show (devices with live control) 2026-07-18 00:05:30 +02:00
Settings feat(devices): auto-detect host IP, discovery dedup, delete + rescan 2026-07-18 09:34:07 +02:00
Access.php All sidebar tabs are real pages (zero console errors) 2026-07-18 00:16:16 +02:00
Dashboard.php feat(ui): card layout replaces flat lists across the app 2026-07-18 08:32:01 +02:00
Host.php Charts: Chart.js MQTT + host traffic on the Host page 2026-07-18 00:40:32 +02:00
Panel.php feat(panel): make tiles actually control + entity naming + reorder feedback 2026-07-18 08:37:17 +02:00
Windows.php Fenster & Türen page: contact/motion sensor overview 2026-07-18 00:07:44 +02:00