# Handoff: pairing prompt on every IP change + zombie bridge ## Findings (2026-10-23) - bscpylgtv keys pairings by IP in `/home/seth/.aiopylgtv.sqlite`; TV drifted through 11 IPs → a new on-TV prompt each time. - A missed prompt made `lgtv.sh off` hang 60s → the TimeoutExpired raised in paho's on_message killed the MQTT thread; the poll loop kept the process "healthy" → silent zombie. - Blocking 60s in the callback also starves keepalive → broker drops the connection → commands sent during the block are lost (the ON that "didn't work"). ## Fixes (deployed, pushed) - lgtv.sh: if there's no key for the current IP, use the newest stored key. - lgtv_mqtt.py: commands run on a single worker thread and catch all exceptions. - Omada reservation f8:01:b4:2a:26:ed → .20 is set, but the TV took .45 anyway; **why it didn't apply is unknown**. With the key fallback, drift no longer matters. ## Open - Untested: whether the TV accepts an old key from a new IP without prompting. Find out the next time the IP changes. - Polls report ON at .45 while Seth says the screen is off — the TV may keep :3000 open in network standby for a while. Watch whether HA state lags.