New Features
- Download the Deco system log using the
tplink_deco.download_system_logaction. The action saves a file under<config>/tplink_deco_logs/and returns its path and line count. Config-entry selection is supported when multiple entries are loaded. (#650) - Optionally forward new Deco system log lines to a syslog receiver over UDP or TCP. Forwarding is disabled by default and configured per entry. Based on #660 and the original work in #607.
- Syslog forwarding remembers its position across Home Assistant restarts, skips existing history on first enable, respects polling pause, and stops before logout on integration unload.
Fixes and Improvements
- Give each polling switch a config-entry-specific unique ID and migrate the old ID while preserving the existing entity ID. (#655, replacing #648; fixes #647)
- Release the Deco session after successful config-entry unload, with coordinator cleanup performed in the correct order. Failed platform unloads retain runtime state. (#656, replacing #652)
- Handle Deco nodes with missing or empty nicknames by falling back to their MAC address. (#651)
- Remove the deprecated
CONN_CLASS_CLOUD_POLLdeclaration;iot_classremainslocal_polling. (#658; fixes #664) - Update Slovak setup/options translations, including the remaining untranslated interval label. Based on #653.
- Link the README to the documentation wiki. (#659)
- Update development/test constraints for pip and Ruff. (#662, #663)
Validation
- Locally checked Python syntax, JSON, pre-commit and diff whitespace.
- Live tested UDP and TCP forwarding, including reception of 1,000-line batches.
- Verified TCP forwarding resumes after a Home Assistant restart and stops when disabled.
- Manual system-log download and the polling switch were tested by the maintainer.
- Normal Deco, client and wireless updates continued successfully during the observed test.
- The combined release PR passed the required GitHub checks before merge.
Live validation covers the maintainer's setup, not every Deco model, firmware or multi-entry arrangement. Additional scenarios have automated regression coverage.
Important Notes
- Each syslog poll downloads the whole Deco log and uses the shared API session, which can delay other requests. The default forwarding interval is 300 seconds.
- Only the newest 1,000 new lines are forwarded per poll. If more lines are generated, older excess lines are skipped; this is not a lossless log archive.
- Syslog transport is unencrypted. Raw Deco logs may contain client identifiers and authentication-related protocol data. Use a trusted local receiver and review/redact logs before sharing them publicly.
- UDP delivery is best effort. TCP retries after a partial send can duplicate messages.
- Log downloads and forwarding are unsupported on legacy encrypted local-web firmware such as the affected Deco S7 firmware. Forwarding emits one warning and stops until reload.
Thanks
- @alunduil (Alex Brandt): manual system-log download and opt-in syslog forwarding.
- @gappleby: original system-log implementation, parsing and tail-matching work in #607.
- @rjullien (Rene Jullien): nickname fallback and the original session-cleanup implementation and tests.
- @SJRepos: the original multi-entry polling-switch fix.
- @misa1515: Slovak translation updates and the deprecation report.
- @dkwolf1: integration, lifecycle/migration safeguards, regression coverage and live release testing.
- @dependabot: development dependency updates.
AI-assisted contributions retain the original co-author attribution in the integration commit.