5 Commits
Author SHA1 Message Date
claude-botandClaude Opus 4.8 33283754ba feat(shelly-manager): ServiceAccount + RBAC for ESPHome firmware pipeline
shelly-manager will build+flash BLE proxies by spawning short-lived
esphome Jobs (on the shelly-manager-iot macvlan → mDNS → OTA:3232) and
streaming their logs. Give it a namespace-scoped identity to do so:

- ServiceAccount shelly-manager + Role shelly-manager-firmware
  (jobs: create/get/list/watch/delete; pods: get/list/watch;
   pods/log: get) + RoleBinding. No cluster-wide, secret, or exec rights.
- Wire serviceAccountName into the Deployment.
- Sync esphome/shelly-ble-proxy.yaml logger to the lean level already
  OTA'd to the device (esp32_ble_client DEBUG, not VERBOSE) so the PVC
  stops filling; VERBOSE is now an on-demand diagnostic via the pipeline.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 11:54:04 +02:00
claude-bot 2990f6e425 feat(esphome): enable OTA + BLE debug logging on the shelly proxy
Provisioning a Shelly over BLE fails at the GATT connect and the cause is
inside the ESP's BLE stack — invisible from shelly-manager's side. To
diagnose and iterate without a USB re-flash per change:

  * ota: (esphome platform) so future config changes push over WiFi from the
    ESPHome Device Builder. Bootstrapping costs one USB flash; set
    shelly_ble_proxy_ota_password in the dashboard secrets first.
  * logger DEBUG with esp32_ble_client=VERBOSE / esp32_ble_tracker,
    bluetooth_proxy=DEBUG, so a connect attempt logs its progress and the
    failure reason.

Takes effect on the (one) USB re-flash; thereafter iterate remotely.

Co-Authored-By: Claude Bot <claude-bot@renner.uno>
2026-07-14 09:19:59 +02:00
claude-botandClaude Opus 4.8 ad35dc3189 feat(esphome): enable IPv6 on the shelly BLE proxy
The IoT VLAN advertises a global IPv6 prefix (RA/SLAAC), but the Atom Echo
ran v4-only because ESPHome defaults IPv6 off. Enable it so the device is a
proper dual-stack citizen of the segment and has a real global IPv6.

This is the prerequisite for the DNS-side fix: once the device has a real
AAAA, a `unifi_dns_record` AAAA for shelly-ble-proxy-1.iot.renner.uno can be
pinned to it (same pattern as the existing udm/captive records in
opentofu/dns_renner_uno.tf), so the name resolves to the device instead of
falling through to the *.renner.uno proxy wildcard.

Takes effect on the next USB re-flash (no OTA on this device by design).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 18:43:31 +02:00
claude-botandClaude Opus 4.8 fdddbe7e78 chore(esphome): trim Shelly BLE proxy to WiFi + API only
Per how it's actually run: drop OTA and the fallback AP/captive_portal — this is
a fixed, low-value proxy, so updates and any WiFi recovery are done by re-flashing
over USB. Secrets shrink to iot_wifi_ssid / iot_wifi_password /
shelly_ble_proxy_api_key (the api encryption key stays; it's the ble-agent
handoff). README secrets list + flashing note updated to match.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 11:01:51 +02:00
claude-botandClaude Opus 4.8 04d8485b04 feat(esphome): version the Atom Echo Shelly BLE proxy config
Source-of-truth YAML (+ README) for the M5 Atom Echo dedicated Bluetooth proxy
that lends its BLE radio to shelly-manager's ble-agent for provisioning WiFi-less
Shellys over mOS RPC-over-BLE. Built/flashed via the in-cluster ESPHome Device
Builder (esphome.home.renner.uno).

Lean, dedicated config (no voice — bluetooth_proxy + voice boot-loops the
ESP32-PICO), esp-idf framework, bluetooth_proxy active. The api encryption key is
the handoff to the ble-agent (its BLE_PROXY_NOISE_PSK). The dashboard reads from
its PVC, not git, so these files are the reviewed/backed-up copy kept in sync by
hand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 01:11:39 +02:00