homeos/app/Services
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
..
AddonRegistry.php feat(addons): installable integrations framework + Ring connect UI 2026-07-18 01:47:02 +02:00
AddonService.php fix(addons): atomic Ring device creation + invalidate ingest gate cache (R15) 2026-07-18 02:01:45 +02:00
AutomationEngine.php fix(automations): honor conditions + atomic cooldown claim (R15) 2026-07-18 01:15:22 +02:00
DeviceCommandService.php feat(shelly): local HTTP/RPC transport — add by IP like Home Assistant 2026-07-18 09:48:35 +02:00
HomeStatus.php Fix R15: require prod hardening in docs; drop N+1 in warnings 2026-07-17 22:03:20 +02:00
MqttCredentialProvisioner.php Fix R15: provision a per-device MQTT credential when assigning a device 2026-07-18 00:50:53 +02:00
ShellyLocalOnboarder.php feat(shelly): local HTTP/RPC transport — add by IP like Home Assistant 2026-07-18 09:48:35 +02:00
ShellyPoller.php feat(shelly): local HTTP/RPC transport — add by IP like Home Assistant 2026-07-18 09:48:35 +02:00
ShellyStatusApplier.php feat(shelly): local HTTP/RPC transport — add by IP like Home Assistant 2026-07-18 09:48:35 +02:00
SystemHealth.php Home dashboard + Host tab: device state & warnings, server status split out 2026-07-17 21:20:38 +02:00
UnifiClient.php Phase 5: UniFi presence — poll, person↔client mapping 2026-07-18 00:31:32 +02:00