Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 08:52
· 30 commits to master since this release

This release is the result of a full review of the library (#97), done with the help of Claude, which also wrote most of the changes. The library now keeps the connection alive by itself, properties know their node, type, options and scale, and a lot of old code is gone. It has breaking changes: see below before you upgrade.

Breaking changes

Connecting

  • connect() makes one attempt and raises the real error right away (AioComfoConnectNotReachable, ComfoConnectNotAllowed, VentilationUnitNotFoundException, …) instead of retrying until connect_timeout (#129).
  • The library never takes over the session of another app anymore. On old firmware that allows only one session, connect() raises ComfoConnectOtherSession while the official app is open, and a reconnect waits 60 s after the bridge closed the session (#135).
  • RMI commands fail with AioComfoConnectNotConnected until the session is up, also during a reconnect (#153).
  • The loop parameter is removed from Bridge, ComfoConnect and discover_bridges(). Arguments after uuid that were passed by position shift by one (#144, #145).

Properties

  • set_property(prop, value, node_id=None) takes a Property instead of unit, subunit, property_id, value (#143).
  • Removed: set_property_typed, get_comfoclime_property / set_comfoclime_property and the six get/set_sensor_ventmode_* methods. Use get_property / set_property with the matching PROPERTY_* (#146).
  • Removed: get_flow_for_speed / set_flow_for_speed and the CLI commands get-flow-for-speed / set-flow-for-speed. Use PROPERTY_FLOW_AWAY/LOW/MEDIUM/HIGH, or get-property 30 1 <3-6> 6 in the CLI (#147).
  • Enum properties (sensor ventilation modes, temperature profile mode, ComfoClime season and profile) return and accept their option, e.g. "auto", instead of the raw number (#146).
  • Temperature properties (RMOT thresholds, profile temperatures, ComfoClime temperatures) are in °C, e.g. 21.5 instead of 215, also in get_property_constraints (#148).
  • get_property(PROPERTY_FIRMWARE_VERSION) returns the decoded version, e.g. "R1.4.0" (#148).

Commands

  • get_speed() and get_temperature_profile() return None when no override is active (the unit follows its schedule); before they could return a stale value (#128).
  • get_comfocool_mode() returns "auto" / "off" instead of a bool (#122).
  • The CLI's set-boost defaults to 3600 s (#123).

Removed API

  • EventBus (#149), GATEWAY_TYPE_PRO (use GatewayType.PRO), SUBUNIT_01–SUBUNIT_08, pdo_to_can / can_to_pdo (#147), UnknownActionException (#139).
  • Some sensor names and units changed to be unique and complete (#150).

New

  • Heartbeat: when nothing was received for heartbeat_interval seconds (30 by default, None disables it), the library asks the bridge for its time and reconnects when it doesn't answer. A silent bridge is detected within about 35 s instead of the TCP timeout (#131, #154).
  • Connection state: connection_state_callback and the connection_state property report connected, disconnected and not_allowed (#133).
  • Properties know the node they live on (product), their options and their scale, with one get_property / set_property / get_property_constraints for all of them (#143, #146, #148).
  • Timers: get_timer / set_timer / cancel_timer and a TimerEntry with the remaining time, for every schedule timer (#128).
  • Exceptions: all of them derive from AioComfoConnectError; NodeNotFoundException is the base of the not-found errors (#139, #143).
  • Docs: the schedule PDOs and timers are documented and checked on a unit (#137, #140).

Fixes

  • Unknown alarm bits, unexpected messages and failing callbacks no longer stop the read loop (#117, #121).
  • The connection is closed and pending requests fail when the read loop ends; is_connected() is correct afterwards (#124).
  • Commands while disconnected raise AioComfoConnectNotConnected (#120).
  • A sensor that fails to re-subscribe after a reconnect no longer blocks the session (#119).
  • Cancelling connect() or disconnect() no longer leaves a reconnect task behind or swallows the cancellation (#129).
  • Smaller command, discovery and CLI fixes (#122, #123, #144).
  • aiohttp is no longer a dependency (#118).

Full Changelog: v0.3.4...v0.4.0