* deconz: Use partition instead of split where possible
With a smattering of code deduplication
Split out of #81493
* Update homeassistant/components/deconz/util.py
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Rename secondary_temperature with internal_temperature
* Prefix binary and sensor descriptions matching on all sensor devices with COMMON_
* Always create entities in the same order
Its been reported previously that if the integration is removed and setup again that entity IDs can change if not sorted in the numerical order
* Rename alarmsystems to alarm_systems
* Use websocket enums
* Don't use legacy pydeconz constants
* Bump pydeconz to v103
* unsub -> unsubscribe
* Improve test coverage prior to improving deCONZ binary sensor platform
* Define all relevant binary sensors as DeconzBinarySensorDescription
* Fix review comment
* Allow providing extra update keys if sensor provides extra attributes
* Minor touch up of naming
* Remove duplicate assert
* Make tamper sensor a property sensor
* Add low battery binary sensor as a binary property sensor
* Change according to review comment
* Use value_fn lambda
* Fix comparison
* Specific entity_description typing
* Minimize the code block affected by catching AttributeError
* Update homeassistant/components/deconz/binary_sensor.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/deconz/binary_sensor.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Avoid try statement
* Reflect review changes in sensor platform as well
* Store known sensor entities once per device
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add typing to deCONZ Alarm Control Panel and Binary Sensor platforms
* Address review comments
* Don't use asserts, use # type: ignore[no-any-return]
* Improve lazy typing of dict
* Don't enable any variants of the daylight sensor entities by default
* Use isinstance rather than doing ZHATYPE compare
* Accidentally removed an import
Mostly snake case conversions and typing
But also a change in retry mechanism
Added a more complete set_* call to most types to remove the direct relation to rest API of deCONZ
* Collection of changing entity properties to class attributes
* Apply suggestions from code review
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Improve control of covers
* Log backtrace if available
* Do not create entity for controller tool
Binary sensor should use state rather than is_tripped
Add some more tests to lights and sensors
* Bump dependency to v74
* Fix Balloobs comments
* Store all entities in dict
* Use stored unique id to select if to create entity or not
* Remove unnecessary init
* Change so same physical sensor doesnt try to create multiple battery sensors
Change so groups get created properly
* Add controls in tests that entities are logged correctly
* Rename BinarySensorDevice to BinarySensorEntity
* Tweak
* Move deprecation warning to __new__, add test
* Move deprecation warning back to __init__
* Move deprecation warning to __init_subclass
When battery sensors gets created before other platforms loading deconz sensors gets created first the other platform would not create entities related to those battery sensors