Phase 19: trash-calendar (Kennelbach ICS -> CalDAV) and transit (GTFS
departures + OpenTripPlanner-backed voice route planning, slow walking
speed assumed). Phase 20: Tapo camera integration via identity's new
Frigate face-recognition presence signal, and chores, a presence/
calendar-driven household task nudger ("I don't care who does it, as
long as it gets done") with a passive fairness tally, litter culprit
attribution, and per-person chore_exempt/chore_reminder_style settings
on identity.
Also: the HA integrations + hardware-monitoring catalogs, Music
Assistant wiring, docs/network-integration.md (OPNsense VLAN
segmentation, no WAN port-forwards), the ESPHome BLE-proxy firmware,
and RuView CSI-presence integration (github.com/ruvnet/ruview) with
household automations for sleep/distress/concurrent-vitals/bathroom-
occupancy — all flagged with their real unverified assumptions and
open decisions. Fixed two real port collisions surfaced while wiring
this in (OTP vs. zigbee2mqtt on 8080, Music Assistant vs. pantry-vision
on 8095).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6CrKjW3yVptUnjG35HjC1
|
||
|---|---|---|
| .. | ||
| README.md | ||
| ble-proxy.yaml | ||
| secrets.yaml.example | ||
README.md
ESPHome BLE proxy — Bermuda's radios (Phase 2)
Plain ESPHome config wrapping ESPHome's own first-party bluetooth_proxy
component — this is the hardware Bermuda (HACS) and HA's Private BLE Device use to
actually see BLE advertisements and resolve them into room-level presence. It is
not RuView (firmware/ruview/) — separate hardware, separate job, see that
directory's own README for why CSI presence sensing is a fundamentally different
(and much higher-risk-to-fabricate) kind of firmware than this one.
Why this one is safe to just write, unlike RuView
bluetooth_proxy is a stock, actively-maintained ESPHome component with a
documented, stable config schema — there is no custom signal-processing, no
hardware-specific register-level bring-up, no invented protocol here. The only
real per-unit decision is room (ble-proxy.yaml's substitutions). This is the
same category of "safe to build directly" as this project's other plain ESPHome
usage (the BLE proxy pattern is explicitly the "separate hardware from RuView"
half of docs/project-plan.md §1.5), unlike RuView's CSI DSP work.
Flash it
- Install ESPHome (CLI or the dashboard add-on/container — this repo doesn't bundle a specific install method, use whichever you already use for other ESPHome devices).
cp secrets.yaml.example secrets.yamlin this directory, fill in your Wi-Fi credentials and generate anapi_encryption_key(command in the file).- Edit
ble-proxy.yaml'ssubstitutions.room/friendly_namefor this specific unit — every proxy needs a distinct name so HA (and Bermuda's triangulation, which deliberately uses ALL proxies' RSSI readings together, not just the nearest one) can tell them apart. esphome run ble-proxy.yamlover USB for the first flash; OTA (theota:block) works for every flash after that.- Repeat steps 3–4 per room needing BLE presence coverage — §1.5 suggests one per room, same density as RuView's own per-room CSI nodes.
What you still have to do in Home Assistant — this repo doesn't build the HA side
Same convention as every other "nothing under this repo builds the HA side" entry
in docs/project-plan.md §2 (UniFi, CalDAV, Matter, ...):
- Bermuda (HACS integration) — install it, it auto-discovers ESPHome
Bluetooth proxies on the network via HA's native
esphomeintegration once this firmware is flashed and online; no manual proxy registration needed beyond that. - Private BLE Device (HA core integration) — set up per phone, using each
phone's actual IRK (iOS: requires pairing the phone as a bookmark in the
Apple/Google "Find My"-style private-address rotation scheme via HA's own
guided flow; Android: similar, see HA's own Private BLE Device docs). This is
what turns a rotating randomized MAC into a stable
person.*-trackable device — without it, Bermuda sees BLE adverts but can't attribute them to a specific phone reliably. - Once both are set up,
identity'sTRUSTED_ENTITY_PREFIXESenv var (seeidentity/README.md) needs to match whatever entity ID pattern Private BLE Device / your fixed-MAC BLE tags actually create — this is flagged as the single highest-risk unverified assumption in Phase 6 (docs/project-plan.mdopen decision #20) precisely because steps 1–2 above have never been run against a real HA instance from within this project.
Manual verification still outstanding
esp32devas the board id is a generic fallback for "D1 Mini32 or similar" (§1.5) — if your actual board has its own more specific ESPHome board id, use that instead; a wrong-but-pin-compatible generic id usually still works, but isn't guaranteed to for every board variant.esp-idfvs. Arduino framework forbluetooth_proxy/esp32_ble_tracker— seeble-proxy.yaml's own VERIFY comment; check your ESPHome version's release notes/docs if you'd rather use Arduino.- Never flashed to real hardware or run against a real Bermuda install — this
config passes ESPHome's own config validator (
esphome config ble-proxy.yaml) but nothing further.