* Use `None` instead of `"unknown"` when the current version is unknown
* Only use the current file version from the OTA notification
* Use `sw_version`, if available, and update `current_file_version`
* Assume the current version is the latest version
* Fix lint errors
* Use `image` instead of `firmware`
* Include a changelog if updates expose it
* Clear latest firmware only after updating the installed version
* Bump minimum zigpy version to 0.63.0
* Create a data update coordinator to consolidate updates
* Fix overridden `async_update`
* Fix most unit tests
* Simplify `test_devices` to fix current tests
* Use a dict comprehension for creating mocked entities
* Fix unit tests (thanks @dmulcahey!)
* Update the currently installed version on cluster attribute update
* Drop `PARALLEL_UPDATES` now that we use an update coordinator
* Drop `_reset_progress`, it is already handled by the update component
* Do not update the progress if we are not supposed to be updating
* Ignore latest version (e.g. if device attrs changed) if zigpy rejects it
* Clean up handling of command id in `Ota.cluster_command`
* Start progress at 1%: 0 and False are considered equal and are filtered!
Use `ceil` instead of remapping 1-100
* The installed version will be auto-updated when the upgrade succeeds
* Avoid 1 as well, it collides with `True`
* Bump zigpy to (unreleased) 0.63.2
* Fix unit tests
* Fix existing unit tests
Send both event types
Globally enable sending both event types
* Remove unnecessary branches
* Test ignoring invalid progress callbacks
* Test updating a device with a no longer compatible firmware
* Extend thermostat local temperature calibration range
* Extend thermostat local temperature calibration range only for TRVZB
* Change _attr_native_min_value and _attr_native_max_value back to -2.5 and 2.5
* Adjust _attr_native_step for TRVZB to 0.2
* Implement requested changes
* Fix platform for MULTI_MATCH
* Implement requested changes
* Implement requested changes
* Add support for pre-imports at setup time
alternative solution to #111331
* refactor
* refactor
* refactor
* mark >1.0s integrations
* no point in executor if already loaded
* no point in executor if already loaded
* cleanup
* cleanup
* two more
* one more
* analytics loads a lot more integrations
* cloud
* debug
* psutil, hardwre
* try zha
* Update homeassistant/setup.py
* await
* comments
* coverage
* coverage
* coverage
* move logic to loader
* move logic to loader
* preserve comments
* Add counter entities to the ZHA coordinator device
* rework to prepare for non coordinator device counters
* counter entity test
* update log lines
* disable by default
* Do not create `current_summ_received` entity until initialized once
* Update zha_devices_list.py to not expect summation received entities
The attribute isn't initialized for these devices in the test (which our check now expects it to be), hence we need to remove them from this list.
* Update sensor tests to have initial state for current_summ_received entity
The attribute needs to be initialized for it to be created which we do by plugging the attribute read.
The test expects the initial state to be "unknown", but hence we plugged the attribute (to create the entity), the state is whatever we plug the attribute read as.
* Update sensor tests to expect not updating current_summ_received entity if it doesn't exist
* Enable Bosch Outdoor Siren and Bosch Twinguard QR Codes
These devices contain inside their QR code device specific link keys instead of installation codes. Normally, the link key is generated from the installation code, but in this case we can directly pass the provided link key from QR code to zigpy application controller.
* Replace ZHA deprecated permit_with_key by permit_with_link_key
Convert installation code directly to link key
* Update tests
* formatting
* aqara curtain motor opened by hand binary sensor
add icon and translation key for identify button
remove previous inversion entity
add window covering type sensor and aqara curtain motor sensors
add aqara curtain motor hook lock switch
add aqara curtain motor attributes zcl_init_attrs
add aqara curtain motor zcl_init_attrs
translations
* update translation string
* review comments
* use enum sensor after rebase
* remove button change
* stub out zha update entity
* update matcher
* updates based on assumptions / conversation
* hook into current installed version
* post rebase cleanup
* incorporate zigpy changes
* fix async_setup_entry
* fix sw_version
* make ota work with config diagnostic match
* fix version format
* sync up with latest Zigpy changes
* fix name attribute
* disable ota providers for tests
* update device list
* review comment
* add current_file_version to Ota ZCL_INIT_ATTRS
* updates to update and start tests
* get installed version from restore data
* better version handling
* remove done todo notes
* reorganize test
* move image notify to cluster handler
* add test for manual update check
* firmware update success test
* coverage
* use zigpy defs
* clean up after rebase
* bump Zigpy
* cleanup from review comments
* fix busted F string
* fix empty error
* move inside check
* guard zigbee network from bulk check for updates
* Correct handling of power_factor ElectricalMeasurement attribute
The Zigbee Cluster Library defines PowerFactor as an int8 with value supported from -100 to 100.
Currently the zha sensor handler attempts to apply the ac_power_divisor and ac_power_multiplier formatters against the attribute value, the spec outlines that this should not be the case.
The impact of the current code is that quirks not using the default values of 1 are multiplying/dividing
power and power factor values prior to updating the cluster attribute.
This results in either a non-conformant power_factor e.g. the value was multiplied by 10 so that an ac_power_divider of 10 could be used, or the power readings sacrificing a point of measurement for lower readings.
Two quirks currently use this workaround:
* ts0601_din_power.py
* ts0601_rcbo.py
* Update ZHA Metering formatter to perform None check on _div_mul_prefix
To address feedback:
https://github.com/home-assistant/core/pull/107641#discussion_r1447547054
* _div_mul_prefix needs self reference
* Simplify None check for _div_mul_prefix
Co-authored-by: Joakim Plate <elupus@ecce.se>
* Updates to formatting and CI test typing fix
* Use ' | ' in place of Union
* Add tests for power_factor sensor
---------
Co-authored-by: Joakim Plate <elupus@ecce.se>
* Allow `window_covering_type` to be `None`
* Create a `window_covering_mode` attribute and simplify inversion switch
* Revert "Create a `window_covering_mode` attribute and simplify inversion switch"
This reverts commit 048d649b4d.
* check both config status and mode
* coverage
---------
Co-authored-by: David Mulcahey <david.mulcahey@icloud.com>
* Update smartenergy.py metering_device_type enums
* Added missing enum 127
* Enum 127 is also electric metering type
* Meter type constants and status enums in smartenergy cluster handler
Addresses
https://github.com/home-assistant/core/pull/109126#discussion_r1471383887
Whilst I have the code open I've also added status handlers for the non-electrical meter types.
* New tests for different metering device type statuses
* Add sensor for exposing Summation Received from Metering cluster
* Ruff format
* Test updates for new sensor
* Update test_sensor.py to support summation_received
* Correct report_count for smart meterning and some pylint warning fixes
* Updating zha component to add entities for snzb06p
Sonoff snzb06p presence detector needs some custom entities.
* Updating ZCL_INIT_ATTRS for sonoff specific attrs
* updating cluster name due to change in quirk
* Limit concurrency of startup traffic to allow for interactive usage
* Drop `retryable_req`, we already have request retrying
* Oops, `min` -> `max`
* Add a comment describing why `async_initialize` is not concurrent
* Fix existing unit tests
* Break out fetching mains state into its own function to unit test
* Dynamically map state class, device class and UoM in ZHA smart energy metering sensor
* Fix some state & device classes and add scaling
* Fix added imperial gallons tests
* Use entity description instead of custom class & add one entity to tests
* Apply code review suggestion
* Scale only when needed
* Revert "Scale only when needed"
This reverts commit a9e0403402.
* Avoid second lookup of entity description
* Change test to not mix sensor types