- Ensure CI process remains operational
- Bumped pip to now prepend uv for using quicker dependency resolving and installing
- As for latest HA Core USB team should rework to python 3.12 (not still 3.10)
- Re-add python 3.12 checks and compatibility
- Bugfix midnight rollover for cicrles 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-usb
for USB (or stick-standalone) route) - Transferring applicable issues from
python-plugwise
repository - Releasing alpha version(s) to production pypi for testing upcoming
plugwise_usb-beta
component
- 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_setpoint
to the output. Will become an additional Number in Plugwise(-beta). - Create separate dicts for
domestic_hot_water_setpoint
,maximum_boiler_temperature
, andthermostat
in 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
setpoint
withsetpoint_low
andsetpoint_high
when cooling is active - Anna: update according to recent Anna-with-cooling firmware updates (info provided by Plugwise)
- Anna: handle
cooling_state = on
according to Plugwise specification (cooling_state = on
andmodulation_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_temperature
from 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_thermostat
key.
- 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_schemas
andselected_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_state
from master thermostats, allows showing the thermostat state as on the Plugwise App - Adam: collect
allowed_modes
and 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
illuminance
andoutdoor_temperature
are 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_today
counter andenergy_consumption_today_last_reset
timestamp. 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 pump
andvalue 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_id
is properly defined (i.e. notNone
) - b4: Use
domain_objects
overdirect_objects
endpoints - 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_id
was set toNone
for 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
black
code (Pythonblack
)
- Just code improvements
- Just code improvements
- Adjust
dwh
andsetpoint
handling
- 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_objects
overappliances
XML-data
- Fix for HVAC idle issue #57
- Improve XML
- Remove debug output
- CI/CD handling
chs
anddhw
determined fromboiler_state
- No
chs
ordhw
on 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_temperature
accordingly (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
haanna
as 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-HA
which was renamed toPlugwise_Smile
from 0.0.26 onwards.