205bc158ac
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.2 KiB
2.2 KiB
LG TV Bridge — consolidated, fixed, deployed (2026-06-01)
State: DONE, live, verified end-to-end.
Single MQTT→HA bridge now runs on steel141 as systemd lgtv-mqtt.service
(User=seth). Repo: git.sethpc.xyz/Seth/lgtv (was 0 commits; now pushed).
What was wrong + what fixed it
- Flaky HA state — old code ping-swept all 254 hosts over SSH every 30s
(racy ARP). + I briefly made it worse by deploying a 2nd bridge with the
same MQTT
client_idas the pve173 one → broker eviction war. → Cached-IP probe (~/.cache/lgtv/last_ip), sweep only on miss. Single bridge; pve173 service retired. - Won't turn ON — weak WoL. → unicast+broadcast, ports 9/7, 3 bursts. TV-side settings are the remaining half (Quick Start+ / Mobile TV On; prefer wired Ethernet) — only Seth can set these.
- power_off failed under systemd — bscpylgtv key DB defaulted to a
CWD-relative path. → pass absolute
key_file_path. Plus a 2× retry for the "OFF within ~30s of ON" LG quirk (TV not ready for WebSocket control yet).
Verified live
- MQTT ON → TV woke <8s, found at 192.168.0.5, IP cached.
- Cache-hit status: 0.041s (was ~1s sweep).
- MQTT OFF (settled): power_off in 3.4s → TV off in ~13s.
- MQTT OFF (10s after ON, the hard case): retry path → rc=0 → TV off.
- Broker: 0 client_id evictions; service 0 restarts.
Decommissioned
pve173 lgtv-mqtt.service: stopped, disabled, unit moved to
pve173:/root/.backup/lgtv-mqtt.service.retired (+ old lgtv_mqtt.py backed up).
Reversible: restore the unit file + daemon-reload + enable --now.
If something regresses
- Logs:
sudo journalctl -u lgtv-mqtt.service -f(on steel141). - Broker churn check: mosquitto log in CT 301 on pve241,
/var/log/mosquitto/mosquitto.log, greplgtv-bridge already. - Redeploy from repo:
./install.sh(needs$HOMELAB_PASSWORD). - WebOS pairing key:
/home/seth/.aiopylgtv.sqlite(steel141, seth). If lost, re-pair withbscpylgtvcommand <ip> ...from seth's shell (TV prompts).
Open / deferred
- TV-side WoL settings unverified (Seth to confirm on the TV).
- No DHCP reservation for the TV (Pi-hole isn't the DHCP server; router is). Not required — cache handles it — but would let us drop the sweep fallback.