Add a whole-house <hdmi-matrix> section: NHAV-1632 device, the hdmi_matrix integration's entity set (16 source selects enabled, 16 stream switches + 16 signal sensors disabled-by-default) and send_command service, deploy steps (and the custom_components-subdir backup trap), and the rear-panel LED semantics plus the suspect-dead port-1 transmitter. Protocol depth points to the repo's docs/device-api.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
10 KiB
Home Assistant (app layer)
Dashboards (Lovelace), the Great Room AV stack, and household automations on home.vino.network. Access/SSH/API/Z-Wave infra is owned by the fritzlab skill home-assistant (reference/home-assistant.md). Token: VINO_HA_TOKEN in ~/.env.
Matter Server 9.1.0 and the matter integration provide local control for three
Nest Learning Thermostat 4th gen nodes plus their bridged sensors. Primary devices
are Entryway Nest, Master Bedroom Nest, and Sport Court Nest; climates are
climate.entryway_nest, climate.master_bedroom_nest, and
climate.sport_court_nest. Thermostats carry Matter Nest + Matter HVAC labels;
child devices are <Location> Sensor Nest and unlabeled. All three are forced-air
heat_cool zones.
The cloud nest fallback integration is not configured. It requires a dedicated
Vino Web OAuth client in Google Cloud project home-assistant-471823 (redirect
https://my.home-assistant.io/redirect/oauth) and a separate Device Access project;
do not reuse Lodge OAuth credentials, Device Access project, or Pub/Sub subscription.
Target cloud naming is <Zone> Google Nest and climate.<zone>_google_nest, labels
Google Nest + HVAC.
Recovery backup pre-nest-normalization-2026-07-18 (a7b09a9b) contains HA
registry/dashboard state without the database.
Sources feed an HDMI matrix (see ); select.hdmi_matrix_vino_network_output_1 (named "Great Room TV") = current TV input, ..._output_3 = speakers. Options incl. Roku-Ultra, Roku-3, FireTvStick, From-GR-AVR, Kiosk1/2.
Matrix-source audio is the Denon AVR, not the TV: zones media_player.great_room (+ media_player.kitchen), source HDMI Matrix; volume = media_player.great_room, and the TV's own speaker is set near-mute by the building block. TV-direct audio = the TV itself (the remote card's volume is context-aware — see ).
Source switching = script.set_mode_great_room_*:
movie→ Roku Ultra (aliasset-mode-great-room-roku-ultra),roku_3,fire_tv_stick,music,camera_scanner.- Each sets both matrix outputs then runs
script.building_block_set_great_room_to_hdmi_matrix(TV→HDMI, AVR zones on, vol 0.55, ALL ZONE STEREO).
Source devices: Roku (remote.roku_ultra/roku_3, commands lowercase home/back/up/down/left/right/select/info); Fire TV (remote.fire_tv_stick, commands UPPERCASE HOME/BACK/UP/DOWN/LEFT/RIGHT/CENTER/INFO/MENU). App shortcuts via media_player.select_source (Roku Plex source = Plex - Free Movies & TV).
Great Room AVR = Denon AVR-X2700H. setup_error plus a timeout on
:8080/goform/Deviceinfo.xml is a wedged receiver network stack; the narrow repair
is Denon telnet command NSRBT, wait for Deviceinfo HTTP 200, then reload the
Great Room config entry. This preserves power/mute state and restores
media_player.great_room + media_player.kitchen.
Integration hdmi_matrix (repo dfritz/haas-hdmi-matrix-custom-component, its own repo — gitignored from the config mirror) is built on the device's binary state protocol. One HA device keyed on the matrix MAC:
select.hdmi_matrix_vino_network_output_1..16— source per output (enabled); friendly names track the device's live port names.switch.…_output_N_stream(blank one output's video) +binary_sensor.…_input_N_signal(live source detect) — disabled by default, enable as needed.hdmi_matrix.send_commandservice — raw!/#device command (wire numbering is 0-based). Coordinator delta-polls every 2 s (idle poll ~32 B); front-panel/IR/web changes converge within a poll. Full protocol + a stdlib decoder (tools/dump_state.py) live in the repo'sdocs/device-api.md— not restated here.
Deploy: rsync custom_components/hdmi_matrix/ → /config/custom_components/hdmi_matrix/, then a full ha core restart (a config-entry reload does NOT re-import changed Python; ha CLI needs the login shell for SUPERVISOR_TOKEN, sudo drops it). NEVER stage a backup dir inside custom_components/ — HA scans every subdir, and a dotted name (hdmi_matrix.bak) plus its manifest.json shadows the hdmi_matrix domain and breaks import.
Physical (rear panel): a port LED lights only when its TX drives live video into an OPEN, unlinked port; a linked receiver or a no-signal input reads dark; blinking = link-training failure. The RemoteTV EDID slots are a last-seen sink cache, not live state — the matrix exposes NO live HDBaseT link status anywhere. Known-bad: matrix port 1 (Output1, the Great Room TV feed) HDBaseT transmitter is suspect-dead — its config is identical to working ports yet it stays dark through stream-toggle, source re-switch, standby cycle, and reboot; migrate that run to a spare output (12–16 are proven-good) if it stays dark.
## Virtual remotes (Lovelace subviews, Overview dashboard) - `great-room-tv-remote` — **the main one.** A bespoke custom card `custom:great-room-remote-card`: plus-shaped D-pad, context-aware volume, source pills (set_mode scripts), apps/playback, power toggle. Fits an iPhone with no scrolling; details in . - `roku-ultra-remote`, `roku-3-remote`, `fire-tv-stick-remote` — older stock single-device remotes (still present).URL: https://home.vino.network/lovelace/great-room-tv-remote. Launcher: a "Great Room TV" navigate-button under the Virtual Remotes heading on the kitchen_greatroom view (subviews aren't in the tab bar, so they need a navigate-button entry point).