Releases: aramshaw/homeassistant-airtouch2plus
Release list
v0.4.5 - upstream disconnect-handling hardening (soak build)
Test build for nathanvdh's handle-disconnect-exceptions branch, combined with everything already proven here.
Ports his two additions onto the full stack (ACK fix + keep-alive poll + WiFi-drop recovery + favourites + console temp):
- Escaped main-loop exceptions are now ERROR-logged via a task done-callback (a silently-dead read loop is how the zombie-client bug stayed invisible)
- run()/stop() lifecycle hardening: stop() is safe when never started, run() is restartable
His OSError widening was already in v0.4.3 (same fix, converged independently). No behaviour change expected in normal operation - the point of this soak is that any future escaped exception shows up loudly in the log instead of silently killing the connection.
TDD: 56 tests green.
v0.4.4 - fork identity in HACS (docs only)
Fork-identity release (no functional change from v0.4.3).
- HACS name is now "Airtouch 2+ (aramshaw fork)" so this fork is distinguishable from nathanvdh's upstream integration in the HACS list.
- info.md / README rewritten: what this fork changes (connection fixes, favourites, console temp), all four platforms, and the upstream-PR status.
- @aramshaw added to codeowners.
Includes everything from v0.4.3 (zombie-client fix, keep-alive poll, ACK fix, favourites, console temp).
v0.4.3 - survive WiFi drop-offs (zombie-client fix)
Critical robustness fix. If the controller dropped off WiFi while connected, the resulting OSError (errno 113, Host unreachable) killed the read loop WITHOUT triggering a reconnect - the integration became a zombie (stale entities, keep-alive silently failing, morning automation erroring) until HA was restarted.
Now ANY socket-level error (reset, timeout, host-unreachable) is treated as connection loss and hands over to the normal reconnect loop, so the integration recovers automatically as soon as the controller rejoins the network.
Highly recommended if your controller has flaky WiFi. Everything from v0.4.2 included. Regression-tested (54 tests).
v0.4.2 - keep-alive poll (idle-reset test)
DIAGNOSTIC TEST build. Adds a periodic keep-alive: a lightweight AC status request every 4 min while connected, to test whether the controller's ~16-minute idle-reset can be prevented.
Background: day-5 logs showed the controller resets the socket after a tight ~16 min of silence (it goes quiet overnight when nothing changes), and the client sends nothing during those windows. This build keeps traffic flowing.
How to read the result (run a night or two, debug logging on):
- If the disconnects / "became unavailable" events STOP -> the hang was an idle timeout and this is the fix.
- If they continue -> it is an intrinsic controller freeze; we revert to mitigations-only and close the root-cause hunt.
Everything from v0.4.1 (favourites, console temp, dropout fix, graceful auto-recovery) plus the keep-alive poll. See docs/controller-investigation.md.
v0.4.1 - daily driver (favourites + console temp + dropout fix + graceful recovery)
Recommended daily-driver build. Same code as v0.3.3 - renumbered to 0.4.1 so it installs cleanly over the throwaway 0.4.0 diagnostic.
Features:
- Connection-dropout fix (ACKs the controller 0x2B/0x45 broadcasts)
- Favourites (read + activate)
- Console / touchscreen temperature sensor
- Entities go unavailable and auto-reconnect when the controller recovers
Note: the AirTouch 2+ has a firmware-level network hang (every ~1-3h, locks out ALL clients incl. the official app, self-recovers). That is a CONTROLLER issue, not fixed by this build - see docs/controller-investigation.md. This build handles it as gracefully as possible.
v0.3.3 - keepalive disabled (controller-hang A/B test)
A/B test build: TCP keepalive DISABLED.
The aggressive keepalive added from upstream (5s idle / 1s interval / 10s TCP_USER_TIMEOUT) is the prime suspect for the recurring overnight controller network hangs - the long-reliable original code set NO socket options. This build removes it; single-variable change vs 0.3.2.
If the early-morning hangs STOP on this build, the keepalive was the cause. If they continue, it points to the controller's own firmware.
All features unchanged: favourites select, console-temp sensor, dropout-fix ACKs, faster reconnect, unavailable-on-disconnect, 0xFD tolerance.
v0.3.2 - unavailable-on-disconnect + faster reconnect + 0xFD fix
Soak-test release 0.3.2 - reliability + visibility improvements over 0.3.1.
- Entities now go unavailable when the controller is unreachable (climate, fan, favourite select, console-temp sensor) - so a hung/dropped controller is visible in HA and automations can guard on it, instead of failing silently.
- Faster reconnect after a controller drop (connect attempts time out in ~10s instead of stalling ~1-2 min on the OS), and prolonged outages are logged at WARNING.
- Fixed log noise on favourite activation (tolerate the controller's undocumented 0xFD header byte).
Same bundled-library approach (no git/pip needed). Keep debug logging on for airtouch2 and custom_components.airtouch2plus during the soak.
v0.3.1 - favourites + console temp + dropout fix (bundled, preview)
Preview / soak-test release of the AirTouch 2+ integration fork.
Included:
- Fixes the "becomes unavailable / stops responding" dropouts (ACKs the controller's undocumented 0x2B/0x45 status broadcasts).
- New: Favourite (scene) select entity - shows the active favourite and switches favourites.
- New: Console (touchscreen) temperature sensor(s).
The forked airtouch2 library is bundled in the integration (no git/pip fetch needed - reliable on HA OS).
Enable debug logging for airtouch2 and custom_components.airtouch2plus to help verify.
v0.3.0 - favourites + console temp + dropout fix (preview)
Preview / soak-test release of the AirTouch 2+ integration fork.
Included:
- Fixes the "becomes unavailable / stops responding" dropouts by acknowledging the controller's undocumented 0x2B/0x45 status broadcasts.
- New: Favourite (scene) select entity - shows the active favourite and switches favourites.
- New: Console (touchscreen) temperature sensor(s).
Pulls the forked airtouch2 library (feat/at2plus-favourites) via the manifest.
Preview for testing before upstreaming - enable debug logging for airtouch2 and custom_components.airtouch2plus to help verify.