- PR 405: Try adding plus-device pairing (untested!!)
- PR 351: Avoid unintentional overwrite of nodetype.cache file at start/reload.
- PR 345: New Feature: schedule clock synchronization every 3600 seconds.
- PR 337: Improve node removal, remove and reset the node as executed by Source, and remove the cache-file.
- PR 342: Improve node_type caching.
- PR 343: Improve writing of cache-files.
- PR 344: Don't store plus-device in nodetypes cache.
- PR 348: Fix broken auto-joining.
- PR 338: Append report interval to Sense node configuration
- PR 333: Improve node_info_update and update_node_details logic
- PR 330: Add sense hysteresis based switch action
- PR 329: Improve EnergyLogs caching: store only data from MAX_LOG_HOURS (24)
- PR 327: Improve code quality according to SonarCloud, simplify sed awake timer
- PR 328: allow get_state request for non-data NodeFeatures
- PR 323: Motion Sensitivity to use named levels (Off/Medium/High) instead of numeric values, add light sensitivity calibration on wake-up for scan devices.
- PR 322: Improve Circle+ load function to align to Circle load function
- PR 321: Catch error reported in Issue #312
- PR 319: Replace unclear warning message when a node is not online, also various small improvements suggested by CRAI.
- PR 312: properly propagate configuration changes and initialize to available on first node wakeup
- PR 302 Improve registry discovery and SED/SCAN configuration management
- Fix for #296 Improve C+ registry collection and node discovery
- Improve SED and SCAN configuration handling, include dirty bool to indicate that the configuration has changed but the node configuration has not yet.
- Fix for #293 via PR 299
- Fix for #291 via PR 297
- PR 295: Streamline of loading function, to allow nodes to load even if temporarily offline, especially for SED nodes.
- PR 291: Collect send-queue depth via PriorityQueue.qsize(), this provides a more accurate result
- Fix for #288 via PR 293
- Chores move module publishing on (test)pypi to Trusted Publishing (and using uv) - released as alpha 0.44.8a0 to demonstrate functionality
- PR 282: Finalize switch implementation
- PR 279: Improve registry cache and node load behaviour
- PR 274: Make the energy-reset function available to Plus devices
- PR #255: Improve enery-logs reset process, enable use of a button in Plugwise_usb beta
- PR #261: Sense: bugfix parsing of humidity value as an unsigned int
- PR #263 Maintenance chores and re-instatement of ruff, deprecate pre-commit cloud runs (just leveraging renovate)
- PR #264 Maintenance chores Rework Github Actions workflow
- PR #269 Implementation of ruff fixes
- PR #271 Ruff fix: split update_missing_registrations in quick and full version
- PR #260: Expose enable-auto-joining via CirclePlus interface
- Bugfix: implement solution for Issue #259
- PR #258: Sense: make sure NodeFeature.BATTERY is called and configuration parameters are propagated properly
- PR #256: Implement Plugwise Sense product
- PR #254:
- Feature Request: add a lock-function to disable relay-switch-changes (energy devices only)
- Fix data not loading from cache at (re)start, store
current_log_addressitem to cache
- Implement code improvements, extend debug message #253
- Implement resetting of energy logs
- Implement setting of energy logging intervals #247
- Improve device Name and Model detection for Switch #248
- Make auto-joining work: (@bouwew)
- Correct setting of accept_join_request which enables the auto-joining (only temporarily!)
- Change NodeAddRequest to not expect a response, the NodeRejoinResponse is often delayed past the NODE_TIMEOUT
- Use the already present response-subscription to capture the NodeRejoinResponse and initialize to joining of a Node
- Improve async task-handling, this should stress the CPU less (@bouwew)
- Limit cache-size to 24hrs instead of to 1 week (@bouwew, @ArnoutD)
- Implement support for devices with production enabled (@bouwew)
- Collect Stick NodeInfo for use in HA (@bouwew)
- Several bugfixes (@ArnoutD)
- Github improvements/fixes, python 3.13 (@CoMPaTech, @bouwew)
- Async fixes - implement queue-based message processing (@ArnoutD - #141)
- Correcting messageflow to HA (@ArnoutD)
Full rewrite of library into async version (@brefra). Main list of changes:
- Full async and typed
- Improved protocol handling
- Support for local caching of collected data to improve startup and device detection
- Improved handling of edge cases especially for energy data collection
- Based on detected firmware version enable the supported features
- API details about supported data is combined into api.py
- Added tests
- Re-add python 3.12 checks and compatibility
- Bugfix midnight rollover for circles without power usage registered during first hour(s)
- CI improvements.
- (Temporary) bugfix on sequence ids.
- Prevent message flooding on the network.
- Reduce network load on restart by updating one history log per loop cycle.
- Workaround for off-by-one issue with log_address record in circle.
- Reduce complexity of energy_consumption_today counters synchronisation between PowerUsage and EnergyCounters hourly and at midnight.
v0.31 refactoring (alpha only, effectively refactored version release): Logic separation between USB and non-USB
- USB component (suggested
python-plugwise-usbfor USB (or stick-standalone) route) - Transferring applicable issues from
python-plugwiserepository - Releasing alpha version(s) to production pypi for testing upcoming
plugwise_usb-betacomponent
- Last version joined with Networking (e.g. Smile/Stretch) products (as
python-plugwise). - v0.31 will be forked as
python-plugwise-usb
v0.27.10: Anna + Elga: final fix for #320
- Collect P1 legacy data from /core/modules - fix for #368
Dependencies: Default to python 3.11Development- Improved markdown (i.e. markup and contents), added linter for markdown & added code owners
- Replaced flake8 linting with ruff (following HA-Core)
- Improved testing on commit
v0.27.8: Stick bugfix: fix for reported Plugwise-Beta issue #347
- Change message request queue a FiFO queue
- #312
- Fix Stick-related memory-leaks
Dependencies: Add python 3.11 support
(# v0.27.3, v0.27.2: were not released)
- Updates for Anna+Elga and Adam-OnOff systems
- Loria/Thermastage fix
(# v0.26.0: not released)
- Anna+Elga: final solution for #320
- Related to Core Issue 83068: handle actuator_functionality or sensor depending on which one is present
v0.25.13: Anna+Elga, OnOff device: base heating_state, cooling_state on central_heating_state key only
- Partial solution for #320
- Improving the solution for Core Issue 81839
- Revert: Improve handling of xml-data missing, raise exception with warning; the reason for adding this fix is not clear. Needs further investigation.
- Remove raising of InvalidSetupError, no longer needed; handled in Plugwise config_flow (function added by Frenck)
- Simplify logic calling _power_data_from_location() (similar to v0.21.4); possible solution for Core Issue 81672
- _full_update_device(): revert back to v0.21.4 logic
- async_update(): not needed to refresh self._modules
- Add fix for Core #81712
- Anna + Elga: hide cooling_enable switch, (hardware-)switch is on Elga, not in Plugwise App
- Adam: improve collecting regulation_mode-related data. Fix for #240
- Anna: remove device availability, fix for Core Issue 81716
- Anna + OnOff device: fix incorrect heating-state, fix for Core Issue 81839
- Improve handling of xml-data missing, raise exception with warning. Solution for Core Issue 81672
- Improve handling of empty schedule, fix for #241
- This fixes the unexpected appearance of new entities after the Adam 3.7.1 firmware-update
- Properly handle an empty schedule, should fix #313
- Fix a set_temperature() and heat_cool related bug
- Change mode cool to heat_cool
- Add setpoint_high/setpoint_low to output
- Replace mode heat_cool by cool (available modes are: auto, heat, cool)
- Add cooling_enabled switch
- Add dhw_mode/dhw_modes (for selector in HA)
- Add dhw_temperature sensor
- Show Plugwise notifications for non-legacy Smile P1
- Add back Adam vacation preset, fixing reopened issue #185
- Change all gateway model names to Gateway
- Change Anna Smile name to Smile Anna, Anna model name to ThermoTouch
- Change P1 Smile name to Smile P1
- Remove raise error-message, change priority of logger messages to less critical
- Fix for issue #213
- The Anna-Elga usecase, providing a heating and a cooling setpoint, was reverted back to providing a single setpoint.
- Change Anna-gateway model to Smile - related to Core blog entity_naming and changes in the Core Plugwise(-beta) code.
- Output elga_cooling_enabled, lortherm_cooling_enabled or adam_cooling_enabled when applicable. To be used in Core Plugwise(-beta) instead of calling api-variables.
- Protect the self-variables that will no longer be used in Core Plugwise(-beta).
- pyproject.toml updates.
- Adapt test-code where needed.
- Add
domestic_hot_water_setpointto the output. Will become an additional Number in Plugwise(-beta). - Create separate dicts for
domestic_hot_water_setpoint,maximum_boiler_temperature, andthermostatin the output. - Change
set_max_boiler_temperature()toset_number_setpoint()and make it more general so that more than one Number setpoint can be changed. - Fix a cooling-related bug (Anna + Elga).
- Improve
set_temperature()function. - Update the testcode accordingly.
- Anna: replace
setpointwithsetpoint_lowandsetpoint_highwhen cooling is active - Anna: update according to recent Anna-with-cooling firmware updates (info provided by Plugwise)
- Anna: handle
cooling_state = onaccording to Plugwise specification (cooling_state = onandmodulation_level = 100) - Move boiler-type detection and cooling-present detection into
_all_device_data() - Update/extend testing and corresponding userdata
- Update
_last_used_schedule(): provide the collected schedules as input in order to find the last-modified valid schedule. _rule_ids_by_x(): replace None by NONE, allowing for simpler typing.- Remove
schedule_temperaturefrom output: for Adam the schedule temperature cannot be collected when a schedule is not active. - Simplify
_schedules(), don't collect the schedule-details as no longer required. - Improve solution for plugwise-beta issue #276
- Move HA Core input-checks into the backend library (into set_schedule_state() and set_preset())
v0.18.1: Smile Adam: don't show vacation-preset, as not shown in the Plugwise App or on the local Adam-website
- Further improve typing hints: e.g. all collected measurements are now typed via TypedDicts
- Implement correct generation of schedules for both heating and cooling (needs testing)
- Fix #277
- Improve incorrect test-case validation
- Move compressor_state into binary_sensors
- Adam: add missing zigbee_mac to wireless thermostats
- Stretch & Adam: don't show devices without a zigbee_mac, should be orphaned devices
- Harmonize appliance dicts for legacy devices
- Typing improvements
- Fix related test asserts
- raise in error-cases, move LOGGER.debug messages into raise
- clean up code
- Bugfix: update set_schedule_state() to handle multi thermostat scenario's
- Improve tracking of the last used schedule, needed due to the changes in set_schedule_state()
- Improve invalid schedule handling
- Update & add related testcases
- Naming cleanup
- Add regulation_mode and regulation_modes to gateway dict, add related set-function
- Add max_boiler_temperature to heater_central dict, add related set-function
- Improve typing hints
- Fix for #250
- Rename heatpump outdoor_temperature sensor to outdoor_air_temperature sensor
- Fix for Core Issue 68003
- Refix solution for #158
- Fix for #158: error setting up for systems with an Anna and and Elga (heatpump).
- Block connecting to the Anna when an Adam is present (fixes pw-beta #231).
- Combine helper-functions, possible after removing code related to the device_state sensor.
- Remove single_master_thermostat() function and the related self's, no longer needed.
- Use .get() where possible.
- Implement walrus constructs ( := ) where possible.
- Improve and simplify.
- Provide cooling_state and heating_state as
binary_sensors, show cooling_state only when cooling is present. - Clean up gw_data, e.g. remove
single_master_thermostatkey.
- Move schedule debug-message to the correct position.
- Code quality fixes.
- Expose mac-addresses for network and zigbee devices.
- Expose min/max thermostat (and heater) values and resolution (step in HA).
- Changed mac-addresses in userdata/fixtures to be obfuscated but unique.
- Code quality improvements.
- As per Core deprecation of python 3.8, removed CI/CD testing and bumped pypi to 3.9 and production.
- Add support for Stretch with fw 2.7.18.
- BREAKING: Change active device detection, detect both OpenTherm (replace Auxiliary) and OnOff (new) heating and cooling devices.
- Stretch: base detection on the always present Stick
- Add Adam v3.6.x (beta) and Anna firmware 4.2 support (representation and switching on/off of a schedule has changed)
- Anna: Fix cooling_active prediction
- Schedules: always show
available_schemasandselected_schema, also with "None" available and/or selected - Cleanup and optimize code
- Adapt and improve testcode
v0.16.0 - Smile - Change output format, allowing full use of Core DataUpdateCoordintor in plugwise-beta
- Change from list- to dict-format for binary_sensors, sensors and switches
- Provide gateway-devices for Legacy Anna and Stretch
- Code-optimizations
- Anna: add two sensors related to automatic switching between heating and cooling and add a heating/cooling-mode active indication
- Adam: also provide a heating/cooling-mode active indication
- Fixing #171
- Improved dependency handling (@dependabot)
- Adam: collect
control_statefrom master thermostats, allows showing the thermostat state as on the Plugwise App - Adam: collect
allowed_modesand look forcooling, indicating cooling capability being available - Optimize code: use
_all_appliances()once instead of 3 times, by updating/changingsingle_master_thermostat(), - Protect several more variables,
- Change/improve how
illuminanceandoutdoor_temperatureare obtained, - Use walrus operator where applicable,
- Various small code improvements,
- Add and adapt testcode
- Add testing for python 3.10, improve dependencies (github workflow)
- Bump aiohttp to 3.8.1, remove fixed dependencies
- Recognize when a thermostat has been removed from a zone and don't show it in Core
- Rename Group Switch to Switchgroup, remove vendor name
- Change the output to enable the use of the HA Core DUC in plugwise-beta.
- Change state_class to "total" for interval- and net_cumulative sensors (following the HA Core sensor platform updates).
- Remove all remnant code related to last_reset (log_date)
- Restructure: introduce additional classes: SmileComm and SmileConnect
- As per Core Blog
state_class_total
- Stick: Add new properties
energy_consumption_todaycounter andenergy_consumption_today_last_resettimestamp. These properties can be used to properly measure the used energy. Very useful for the 'Energy' capabilities introduced in Home Assistant 2021.8 - Stick: Synchronize clock of all plugwise devices once a day
- Stick: Reduced local clock drift from 30 to 5 seconds
- Stick: Optimized retrieval and handling of energy history
- Smile: add the required sensor attributes for Energy support
- Smile: add last_reset timestamps for interval-sensors and cumulative sensors
- Smile: fix the unit_of_measurement of electrical-cumulative-sensors (Wh --> kWh)
- Smile: improve use of protection for functions and parameter
- Fix pylint warnings and errors
- Adam, Anna: don't show removed thermostats / thermostats without a location
- Rearrange data: the outputs of get_all_devices() and get_device_data() are combined into self.gw_devices. Binary_sensors, sensors and switches are included with all their attributes, in lists.
- Two classes have been added (entities.py), one for master_thermostats and one for binary_sensors, these classes now handle the processing of data previously done in plugwise-beta (climate.py and binary_sensor.py).
- Stick: make stick code run at python 3.9 (fixes AttributeError: 'Thread' object has no attribute 'isAlive')
- Smile: underlying code improvements (solve complexity, linting, etc.), continuing to improve on the changes implemented in v0.9.2.
- Add support for getting and setting the lock-state of Plugs-, Circles-, Stealth-switches, for Adam and Stretch only. A set lock-state prevents a switch from being turned off.
- There is no lock_state available for the following special Plugwise classes:
central heating pumpandvalue actuator
- Functions not called by the plugwise(-beta) code have been moved to helper.py in which they are part of the subclass SmileHelper
- All for-loops are now executed only once, the results are stored in self-parameters.
- Added fw, model and vendor information into the output of get_device_data(), for future use in the HA Core Plugwise(-beta) Integration
- Split off HEATER_CENTRAL_MEASUREMENTS from DEVICE_MEASUREMENTS so they can be blocked when there is no Auxiliary device present
- Collect only the data from the Smile that is needed: full_update_device() for initialisation, update-device() for updating of live data
- Adapt test_smile.py to the new code, increase test-coverage further
- Improvement: Debounce relay state
- Improvement: Prioritize request so requests like switching a relay get send out before power measurement requests.
- Improvement: Dynamically change the refresh interval based on the actual discovered nodes with power measurement capabilities
- Added: New property attributes for USB-stick.
The old methods are still available but will give a deprecate warning
- Stick
devices(dict) - All discovered and supported plugwise devices with the MAC address as their keyjoined_nodes(integer) - Total number of registered nodes at Plugwise Circle+mac(string) - The MAC address of the USB-Sticknetwork_state(boolean) - The state (on-line/off-line) of the Plugwise network.network_id(integer) - The ID of the Plugwise network.port(string) - The port connection string
- All plugwise devices
available(boolean) - The current network availability state of the devicebattery_powered(boolean) - Indicates if device is battery poweredfeatures(tuple) - List of supported attribute IDsfirmware_version(string) - Firmware version device is runninghardware_model(string) - Hardware model namehardware_version(string) - Hardware version of devicelast_update(datetime) - Date/time stamp of last received update from devicemac(string) - MAC address of devicemeasures_power(boolean) - Indicates if device supports power measurementname(string) - Name of device based om hardware model and MAC addressping(integer) - Network roundtrip time in millisecondsrssi_in(integer) - Inbound RSSI level in DBmrssi_out(integer) - Outbound RSSI level based on the received inbound RSSI level of the neighbor node in DBm
- Scan devices
motion(boolean) - Current detection state of motion.
- Sense devices
humidity(integer) - Last reported humidity value.temperature(integer) - Last reported temperature value.
- Circle/Circle+/Stealth devices
current_power_usage(float) - Current power usage (Watts) during the last secondcurrent_power_usage_8_sec(float) - Current power usage (Watts) during the last 8 secondspower_consumption_current_hour(float) - Total power consumption (kWh) this running hourpower_consumption_previous_hour(float) - Total power consumption (kWh) during the previous hourpower_consumption_today(float) - Total power consumption (kWh) of todaypower_consumption_yesterday(float) - Total power consumption (kWh) during yesterdaypower_production_current_hour(float) - Total power production (kWh) this hourrelay_state(boolean) - State of the output power relay. Setting this property will operate the relay
- Switch devices
switch(boolean) - Last reported state of switch
- Stretch v2: fix failed connection by re-adding the aiohttp-workaround
- Stick
- Bug-fix: Power history was not reported (0 value) during last week of the month
- Improvement: Validate message checksums
- Improvement: Do a single ping request to validate if node is on-line
- Improvement: Guard Scan sensitivity setting to medium
- Improvement: Move general module code of messages, nodes, connection to the init.py files.
- Improvement: Do proper timeout handling while sequence counter resets (once every 65532 messages)
- Improvement: Better code separation. All logic is in their designated files:
- Connection (connection/*.py)
- Data parsing (parser.py)
- Data encoding/decoding of message (messages/*.py)
- Message handling - Initialization & transportation (controller.py)
- Message processing - Do the required stuff (stick.py & nodes/*.py)
- Improvement: Resolves all flake8 comments
- Fix for HA Core issue #44349
- Fix other value scaling bugs
- Remove aiohttp-workaround - issue solved in aiohttp 3.7.1
(## 0.8.4 - Not released: Fix "Gas Consumed Interval stays 0" )
- Switch Smile to defusedxml from lxml (improving security)
- Lint and flake recommendations fixed
- Project CI changes
- Bug-fix: fix use of major due to change of using semver.VersionInfo.
- Add model-info: to be used in Core to provide a more correct model-name for each device.
- Code improvements and increase in test-coverage.
- Merge of the former network and former USB module to a single python module
- Improved commit/test/CI&CD
- Notifications handling for fixtures
Changelogs below this line are separated in the former python-plugwise USB-only fork from @brefra and the former Plugwise_Smile Network-only module by @bouwew and @CoMPaTech
- All details in the release tag
- Return power usage even if it's 0
- Callbacks for nodes discovered after initial scan
- Registered node counter
- Improved reliability of node discovery
- Fixed negative power usage
- Add a service to dismiss/delete the Plugwise Notification(s) from within HA Core (plugwise.delete_notification)
- Improve detection of switch-groups and add group switching for the Stretch
- Improve error handling, add group switching of plugs (Adam).
- Initial support for Stretch (v2/v3) including tests
- Force gzip encoding, work-around for aiohttp-error
- Improve P1 DSMR legacy support
- Ensure
gateway_idis properly defined (i.e. notNone) - b4: Use
domain_objectsoverdirect_objectsendpoints - Remove py3x internal modules (as requested per #86)
- CI-handling improvements and both 3.7 and 3.8 testing
- Code cleanup and output formatting improvements
- Fix situation where
unique_idwas set toNonefor legacy P1 DSMRs - Introduce using the (discovered) hostname as unique_id
- Add exporter for fixtures to be used by HA-core for testing plugwise
- Improve
error-detection - Expose Plugwise System notifications (i.e. warnings or errors visible in the app)
- Just
blackcode (Pythonblack)
- Just code improvements
- Just code improvements
- Adjust
dwhandsetpointhandling
- Thanks to report from @fsaris
- Adept code to allow for change introduced by firmware 4.x
- See 65
- Add return water temperature from Auxiliary
- Add exception for InvalidAuthentication
- Revert setting heating when None
- Change to
intended_central_heating_state
- Code improvement for asyncio
- Added firmware 4.x test data and tests
- CI/CD improve pre-commit hooks
- Remove useless water sensor
- Improve testing guidelines README
- CI/CD Version number handling
- Improvement by contributor @sbeukers (Smile P1 v4 support)
- Legacy Anna fixes and test improvements
- Favour
domain_objectsoverappliancesXML-data
- Fix for HVAC idle issue #57
- Improve XML
- Remove debug output
- CI/CD handling
chsanddhwdetermined fromboiler_state- No
chsordhwon legacy Anna - More legacy anna fixes
- Legacy Anna fixes
- Auxiliary tests
- Fix for
smt(single master thermostat) - CI/CD Improved testing
- Sensor value rounding
- Improve sensor names
- Handle
set-commands in testing - Code style improvements (lint/black)
- Create further testing
- Improve coverage/linting/etc.
- Prepare virtualenvs (travis etc.)
- Code styling/wording fixes (lint/pep)
- Improve READMEs
- Testing improvements
dhw-handling
- Favour exception raises above returning
False - Restructure full device update accordingly
- Add Plugwise Exceptions
- CI/CD add tests accordingly
- FutureWarnings acted accordingly
- Add heatpump-environment data and tests (thanks to @marcelveldt)
- Improve
outdoor_temperatureaccordingly (favour Auxiliary over Smile)
- Squash device names
- Version skip to align with
-beta-component
- Thanks to @marcelveldt and his environment
- Coherent heating/cooling state
- Thanks to @(tbd) and his environment
- More linting
- Cleanup scan_thermostat
- Cleanup unused variables
- Improve/standardize public variables
- Tests updated accordingly
- Version skip to align with
-beta-component
- Delete fugly sleeping
- Improve binary sensors
- Update tests accordingly
black- READMEs updated
- Fix peak values for DSMR
- Calculate net (netto) values
- Thermostat finder
- Add tests accordingly
- Re-introduce legacy Anna from
haanna/anna-ha - Add legacy P1 DSMR
- Including tests
- Add tests and location mapping
- Improve handling Lisa thermostat
- Improve relay (plugs) functionality
- Add individual Smiles as 'hub'-components
- haanna
- After mostly leaving
haannaas a stale project (where @bouwew didn't have PyPi permissions) development was shortly split between personal repositories from both @bouwew and @CoMPaTech before we decided to fully rewrite - from scratch - it toPlugwise-HAwhich was renamed toPlugwise_Smilefrom 0.0.26 onwards.