* move legacy needed convertions into legacy entity
* add zone related sensors
* fix test coverage
* fix typing
* fix entity name translations
* rename placeholder to tracked_entity
* Mask sensitive data in google_assistant logs
* Move common code to homeassistant/util/redact.py
* Move to helpers
* Add tests
* Tweak
* Redact additional logs
* Fix stale docstring
* Don't reveal the length of masked data
* Update test
* Fix time to arrival
* Update snapshot
* Freeze time for snapshot
* Fix docstring
* Add available_fn
* Update snapshot
* Dont use variance for full charge
* Remove unrelated changes
* Revert snapshot
* Rename hours_to_datetime
* 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
* Add readable state for tesla wall connector
* Add test
* Display raw sensor by default
* Use none instead of unknown
* Remove old state from tests
* Rename raw state to status code
* Test unknown
* Update homeassistant/components/tesla_wall_connector/strings.json
Co-authored-by: Franck Nijhof <git@frenck.dev>
---------
Co-authored-by: Franck Nijhof <git@frenck.dev>
* bump python-matter-server to version 5.3.0
* Add all node related websocket services
* remove open_commissioning_window service
as it wasnt working anyways
* use device id instead of node id
* tests
* add decorator to get node
* add some tests for invalid device id
* add test for unknown node
* add explicit exception
* adjust test
* move exceptions
* remove the additional config entry check for now
to be picked up in follow up pR
* add config flow
* fix tests
* adjust and fix tests
* fix tests
* config_zones as fixture
* add config flow tests
* use coordinator.async_config_entry_first_refresh
* use entry.entry_id for hass.data
* fix doc string
* remove unused unit_of_measurement string key
* don't store friendly_name, just use self.name
* abort on matching entiry
* break out legacy setup into seperate function
* make tracked entites required
* move _asnyc_setup_legacy to module level
* use zone name as config entry title
* add entity_used_in helper
* check entry source if imported
* create repair issue for removed tracked entities
* separate state change from registry change event handling
* migrate unique ids after tracked entity renamed
* use full words for the variable names
* use defaultdict
* add test
* remove unnecessary if not in check
* use unique_id of tracked entity
* use the entity registry entry id
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* 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
* Simplify MQTT device trigger
* Add test non unique trigger_id
* Adjust deprecation warning
* Make discovery_id optional
* refactor double if
* Improve validation, add tests and deprecation comments
* Avoid breaking change
* Inmprove error message
* Match on discovery_id instead of discovery_info
* Revert an unrelated change
* follow up comments
* Add comment and test on device update with non unique trigger
* Update homeassistant/components/mqtt/device_trigger.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/components/mqtt/device_trigger.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add volume flow rate conversions
* Add missing translations
* Adjust liter unit and add gallons per minute
* Adjust to min instead of m for minutes
* Add matching class for number
* Add some tests for number and sensor platform
* Add deprecated constants
* Add explicit list of flow rate for check
This reverts commit 105171af31.
* Update calendar tests to use mock entities instead of demo platform
* Add Generator type to fixture
* Fix generator syntax
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Allow delete_all_refresh_tokens to delete a specific token_type
* add a test
* minor string change
* test updates
* more test updates
* more test updates
* fix tests
* do not delete current token
* Update tests/components/auth/test_init.py
* Update tests/components/auth/test_init.py
* Option to not delete the current token
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* add bring integration
* fix typings and remove from strictly typed
- wait for python-bring-api to be ready for strictly typed
* make entity unique to user and list
- before it was only list, therefore the same list imported by two users would have failed
* simplify bring attribute
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* cleanup and code simplification
* remove empty fields in manifest
* __init__.py aktualisieren
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* __init__.py aktualisieren
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* strings.json aktualisieren
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* streamline async calls
* use coordinator refresh
* fix order in update call and simplify bring list
* simplify the config_flow
* Update homeassistant/components/bring/manifest.json
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
* add unit testing for __init__.py
* cleanup comments
* use dict instead of list
* Update homeassistant/components/bring/todo.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* clean up
* update attribute name
* update more attribute name
* improve unit tests
- remove patch and use mock in conftest
* clean up tests even more
* more unit test inprovements
* remove optional type
* minor unit test cleanup
* Update .coveragerc
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
* bump mypermobil to 0.1.8
* add eula check in config flow
* Update strings.json
* add test for email code with signed eula
* fix docstring character limit
* add placeholder description for MyPermobil
* Add pylint plugin to check if coordinator is placed in its own module
* Remove unintended changes
* Remove pylint disable and let CI only fail on W,E,F
* Make check conventional
* Apply review suggestion
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use option instead
* Remove pylint arguments from pre-commit
* Partially revert "Remove pylint disable and let CI only fail on W,E,F"
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add phase entities to Enphase Envoy
* Implement review feedback for translation strings
* Enphase Envoy multiphase review changes
Move device name logic to separate function.
Refactor native value for phases
Use dataclasses.replace for phase entities, add on-phase to base class as well, no need for phase entity descriptions anymore
* Enphase Envoy reviewe feedback
Move model determination to library.
Revert states test for future split to sensor test.
* Enphase_Envoy use model description from pyenphase library
* Enphase_Envoy refactor Phase Sensors
* Enphase_Envoy use walrus in phase sensor
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
Remove extra confirmation step in tplink discovery flow
After discovery, and manually entering credentials, we would ask
the user if they still wanted to set up the device. Instead we
now set create the config entry as soon as they enter correct
credentials as its clear that they want to proceed.
* Matter sensors for air quality measurements
Add sensors for CO2, PM1, PM2.5, PM10 and TVOC
* Add initial tests for matter air quality sensor
* Remove VOC data as requires unit extraction from cluster
* start work on webhooks
* start work on webhooks
* use background task
* websocket improvement
* add test
* add webhook id to mock_config_entry
* some changes
* add webhook to manifest
* fix test
* reset poll timer on webhook update
* reset poll timer on webhook update
* code cleanup
* generate webhook id in config flow
* fix merge
* undo var rename
* remove
* ruff
* ruff
* only delete specific webhook
* clarify warning
* version bump
* minor improvements
* requested changes
* unregister function
* move more of unregistration logic
* test pushed data
* add comment
* Update config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* ruff
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add platform switch to flecit_bacnet integration
* Move testing of the switch to it’s own test
* Assert correct method is called one time
* Test switch on/off error recovery
* Review comment
* init support for config flow for lupusec
* correctly iterate over BinarySensorDeviceClass values for device class
* bump lupupy to 0.3.2
* Updated device info for lupusec
* revert bump lupupy for separate pr
* fixed lupusec test-cases
* Change setup to async_setup
* remove redundant check for hass.data.setdefault
* init support for config flow for lupusec
* correctly iterate over BinarySensorDeviceClass values for device class
* bump lupupy to 0.3.2
* Updated device info for lupusec
* revert bump lupupy for separate pr
* fixed lupusec test-cases
* Change setup to async_setup
* remove redundant check for hass.data.setdefault
* resolve merge error lupupy
* connection check when setting up config entry
* removed unique_id and device_info for separate pr
* changed name to friendly name
* renamed LUPUSEC_PLATFORMS to PLATFORMS
* preparation for code review
* necessary changes for pr
* changed config access
* duplicate entry check
* types added for setup_entry and test_host_connection
* removed name for lupusec system
* removed config entry from LupusecDevice
* fixes for sensors
* added else block for try
* added integration warning
* pass config to config_flow
* fix test cases for new config flow
* added error strings
* changed async_create_entry invocation
* added tests for exception handling
* use parametrize
* use parametrize for tests
* recover test
* test unique id
* import from yaml tests
* import error test cases
* Update tests/components/lupusec/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* fixed test case
* removed superfluous test cases
* self._async_abort_entries_match added
* lib patching call
* _async_abort_entries_match
* patch lupupy lib instead of test connection
* removed statements
* test_flow_source_import_already_configured
* Update homeassistant/components/lupusec/config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* removed unique_id from mockentry
* added __init__.py to .coveragerc
---------
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add support for entity name in GeoJSON
Previously GeoJSON names were just the config entry ID. This is not very user friendly. Particularly so when there are many config entries and many, many entities from those same many config entries.
* Update GeoJSON tests to support entity names
* Add Huum integration
* Use DeviceInfo instead of name property for huum climate
* Simplify entry setup for huum climate entry
* Don’t take status as attribute for huum climate init
* Remove unused import
* Set unique id as entity id in huum init
* Remove unused import for huum climate
* Use entry ID as unique ID for device entity
* Remove extra newline in huum climate
* Upgrade pyhuum to 0.7.4
This version no longer users Pydantic
* Parameterize error huum tests
* Update all requirements after pyhuum upgrade
* Use Huum specific naming for ConfigFlow
* Use constants for username and password in huum config flow
* Use constants for temperature units
* Fix typing and pylint issues
* Update pyhuum to 0.7.5
* Use correct enums for data entry flow in Huum tests
* Remove test for non-thrown CannotConnect in huum flow tests
* Refactor failure config test to also test a successful flow after failure
* Fix ruff-format issues
* Move _status outside of __init__ and type it
* Type temperature argument for _turn_on in huum climate
* Use constants for auth in huum config flow test
* Refactor validate_into into a inline call in huum config flow
* Refactor current and target temperature to be able to return None values
* Remove unused huum exceptions
* Flip if-statment in async_step_user flow setup to simplify code
* Change current and target temperature to be more future proof
* Log exception instead of error
* Use custom pyhuum exceptions
* Add checks for duplicate entries
* Use min temp if no target temp has been fetched yet when heating huum
* Fix tests so that mock config entry also include username and password
* Fix ruff styling issues
I don’t know why it keeps doing this. I run `ruff` locally, and then it does not complain, but CI must be doing something else here.
* Remove unneded setting of unique id
* Update requirements
* Refactor temperature setting to support settings target temparature properly
* Backport code from #86386
* Add tests
* Remove local dev change
* Implement device class validation based on unit
* Swap sensor and externalsensor classes (based on importance)
* Use translations for external sensor entities
* Re-add meter identifier as sensor for external devices
* Add migration for Gas identifier
* Rename HomeWizardExternalIdentifierSensorEntity class
* Fix all existing tests
* Reimplement tests for extenal devices with smapshots
* Remove non-used 'None' type in unit
* Add migration test
* Clean up parameterize
* Add test to fix last coverage issue
* Fix non-frozen mypy issue
* Set device name via added EntityDescription field
* Remove device key translations for external sensors,
* Bring back translation keys
* Set device unique_id as serial number
* Remove meter identifier sensor
* Simplify external device initialization
* Adjust tests
* Remove unused gas_meter_id migration
* Remove external_devices redaction
* Remove old gas meter id sensor after migration
* Add last_reset to trigger based template sensors
* Add last_reset to state based template sensors
* CI check fixes
* Add pytests
* Add test cases for last_reset datetime parsing
* Add test for static last_reset value
* Fix ruff-format
* Fix matter light color modes
* Make onoff light fixture only onoff
* Make dimmable light only a dimmable light
* Make color temp light fixture only a color temp light
* Add invert option to switch_as_x
* Store invert flag in entity options
* Add options flow
* Update strings
* Add tests
* Address review comment
* Update homeassistant/components/switch_as_x/strings.json
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Address review comments
* Inline get_suggested which was only used once in tests
* Address review comments
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* 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
* Add bangolufsen integration
* add untested files to .coveragerc
* Simplify integration to media_player platform
* Remove missing files from .coveragerc
* Add beolink_set_relative_volume custom service
Tweaks
* Remove custom services
Remove grouping as it was dependent on custom services
* Update API to 3.2.1.150.0
Reduce and optimize code with feedback from joostlek
Tweaks
* Updated testing
* Remove unused options schema
* Fix bugfix setting wrong state
* Fix wrong initial state
* Bump API
* Fix Beosound Level not reconnecting properly
* Remove unused constant
* Fix wrong variable checked to determine source
* Update integration with feedback from emontnemery
* Update integration with feedback from emontnemery
* Remove unused code
* Move API client into dataclass
Fix not all config_flow exceptions caught
Tweaks
* Add Bang & Olufsen brand
* Revert "Add Bang & Olufsen brand"
This reverts commit 57b2722078.
* Remove volume options from setup
Simplify device checks
rename integration to bang_olufsen
update tests to pass
Update API
* Remove _device from base
Add _device to websocket
* Move SW version device update to websocket
Sort websocket variables
* Add WebSocket connection test
* Remove unused constants
* Remove confirmation form
Make discovered devices get added to Home Assistant immediately
Fix device not being available on mdns discovery
Change config flow aborts to forms with error
* Update tests for new config_flow
Add missing api_exception test
* Restrict manual and discovered IP addresses to IPv4
* Re-add confirmation step for zeroconf discovery
Improve error messages
Move exception mapping dict to module level
* Enable remote control WebSocket listener
* Update tests
* Update device config for SETUP_RETRY and use CONF_HOST on startup
* Make entry state checks use a constant
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update tests
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Randomize thread network names
* Use PAN ID as network name suffix
* Apply suggestions from code review
Co-authored-by: Stefan Agner <stefan@agner.ch>
* Update tests
* Format code
* Change format of network name again
---------
Co-authored-by: Stefan Agner <stefan@agner.ch>
* Improve tests of script trace
* Update tests after rebase
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Apply suggestions from code review
* Adjust
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Mark home_plus_control a virtual integration using Netatmo
* Apply code review suggestion
Co-authored-by: Robert Resch <robert@resch.dev>
---------
Co-authored-by: Robert Resch <robert@resch.dev>
* add sensor platform
* transl. of distance already covered by dev.class
* add untested files to .coveragerc
* add missing state translations
* remove translation key for distance sensor
* proximity entity do not use HA number system
* fix
* extend tests
* make const final to be usable as key for TypedDict
* remove proximity from .coveragerc
* replace typeddict by simple dict definition
* make black happy
* rework to create proximity sensor for each tracked entity and always recalculate all entites
* apply review comments
* move direction of travel calc out of the loop
* make direction of travel an enum sensor
* remove unique_id from sensors
* don't set distance=0 when in monitored zone
* set None when direction is unknown
* keep distance 0 in case arrived for legacy entity
* exclude from nearest when in ignored zone
* keep distance=0 when arrived
* use description name for entity name
* remove uneeded typing
* uses consistent variable name
* fix debug messages
* use entity_id as loop var
* rename device_state to tracked_entity_state
* correct MRO for sensor entity classes