Repository navigation
v0.4.0
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 untilconnect_timeout(#129).- The library never takes over the session of another app anymore. On old firmware that allows only one session,
connect()raisesComfoConnectOtherSessionwhile the official app is open, and a reconnect waits 60 s after the bridge closed the session (#135). - RMI commands fail with
AioComfoConnectNotConnecteduntil the session is up, also during a reconnect (#153). - The
loopparameter is removed fromBridge,ComfoConnectanddiscover_bridges(). Arguments afteruuidthat were passed by position shift by one (#144, #145).
Properties
set_property(prop, value, node_id=None)takes aPropertyinstead ofunit, subunit, property_id, value(#143).- Removed:
set_property_typed,get_comfoclime_property/set_comfoclime_propertyand the sixget/set_sensor_ventmode_*methods. Useget_property/set_propertywith the matchingPROPERTY_*(#146). - Removed:
get_flow_for_speed/set_flow_for_speedand the CLI commandsget-flow-for-speed/set-flow-for-speed. UsePROPERTY_FLOW_AWAY/LOW/MEDIUM/HIGH, orget-property 30 1 <3-6> 6in 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.5instead of215, also inget_property_constraints(#148). get_property(PROPERTY_FIRMWARE_VERSION)returns the decoded version, e.g."R1.4.0"(#148).
Commands
get_speed()andget_temperature_profile()returnNonewhen 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-boostdefaults to 3600 s (#123).
Removed API
EventBus(#149),GATEWAY_TYPE_PRO(useGatewayType.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_intervalseconds (30 by default,Nonedisables 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_callbackand theconnection_stateproperty reportconnected,disconnectedandnot_allowed(#133). - Properties know the node they live on (
product), theiroptionsand theirscale, with oneget_property/set_property/get_property_constraintsfor all of them (#143, #146, #148). - Timers:
get_timer/set_timer/cancel_timerand aTimerEntrywith the remaining time, for every schedule timer (#128). - Exceptions: all of them derive from
AioComfoConnectError;NodeNotFoundExceptionis 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()ordisconnect()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