* Add support for showing text on Keba EV chargers
* Changed implementation to use the notify interface
* Removed stale references to set_text
* Clean up
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add config_flow to the dunehd integration
* Add tests
* Run gen_requirements_all
* Fix pylint error
* Better hostname validation
* Build device info in the class
* Allow configuration to specify a host name.
This will default to "synology", so the sensors would be named
sensor.synology_... which is the original implementation.
By specifying a name, which is required for multiple synology hosts,
you can then have sensor.hostA_... and sensor.hostB_...
* Get the base name for the sensors from the Synology DSM hostname
* Don't need the name for the config
* Added missing import
* Fixed another typo
* Removed definition of unused BASE_NAME
* Removed end of line to revert
* Moved for ordering
* add non-root container user
* fix dockerfile and homeassistant editable install
* just install in home directory
* less impactful default changes
* separate RUN for better layer caching
* use vscode-remote base image
* Fix SP2-CL (0x7544) sensor update
This device does not support get_energy(). We need to ignore the CommandNotSupportedError in the update method.
* Format with Black
* Only wrap code that throws with catch
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Sort the players_list attribute of the minecraft_server players_online sensor in order to eliminate uneccessary state updates and ease comparisons in state changes.
* Remove zeroconf options from homekit
homekit uses the system shared zeroconf instance which
made the interface choice option controlled by the
zeroconf integration setting.
* change to cv.deprecated
* adj
* fix remaining tests from original merge conflict
* remove invalidation_version
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Part 2 of 2 (breaking changes in part 2).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
* bump timeout to 1800s, adjust comment
* bump timeout to 1800s, adjust comment
* bump timeout to 4h
* bump timeout to 4h
* remove timeout failsafe
* remove timeout failsafe
* and the test
* and the test
* find the test that needs mocking
* find the test that needs mocking
* Revert "find the test that needs mocking"
This reverts commit 064e7787a8e9bc65df965530726fa1c41f8bcd36.
* Revert "find the test that needs mocking"
This reverts commit 064e7787a8e9bc65df965530726fa1c41f8bcd36.
* fix the one that was missed due to the conflict
* Add switch component
* Update homeassistant/components/plugwise/switch.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/switch.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Improvements by @bdraco
Co-authored-by: J. Nick Koston <nick@koston.org>
* Stable device id when a deleted device is restored.
* Tweak
* Store only basic data for deleted devices
* Simplify code
* Simplify code
* Address review comments.
* Improve test
* Fix missing save
* Part 1 of 2 (no breaking changes in part 1).
When integrations configured via the UI block startup or fail to start,
the webserver can remain offline which make it is impossible
to recover without manually changing files in
.storage since the UI is not available.
This change is the foundation that part 2 will build on
and enable a listener to start the webserver when the frontend
is finished loading.
Frontend Changes (home-assistant/frontend#6068)
* Address review comments
* bump timeout to 1800s, adjust comment
* bump timeout to 4h
* remove timeout failsafe
* and the test
- add Synology DSM Security binary sensor (enabled by default)
- use device name instead of id in names
- add device type to name
- show disk manufacturer, model and firmware version in devices
- some entries are disabled by default (`entity_registry_enabled_default`)
- binary sensor + sensor uses `device_class` when possible
- do not fetch a concerned API if all entries of it are disabled
- entity unique_id now uses key instead of label
- entity entity_id changes for disk and volume: example from `sensor.synology_status_sda` to `sensor.synology_drive_1_status`, or from `sensor.synology_average_disk_temp_volume_1` to `sensor.synology_volume_1_average_disk_temp`
- now binary sensor:
- disk_exceed_bad_sector_thr
- disk_below_remain_life_thr
- removed sensor:
- volume type (RAID, SHR ...)
- disk name (Drive [X])
- disk device (/dev/sd[Y])
* Re-add connections to device_info
* Fix typo in identifiers
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Support stream profile and configuring it through options flow
* Options flow test
* Allow configuration of not using a stream profile
* Shorten default stream profile string
The OpenCV image_processing component accepts a `min_size` argument in
each classifier that is then passed into the OpenCV library. The
`min_size` argument is expected to be a tuple of 2 ints, and is entered
into the platofrm schema as such. However, yaml will always produce a
list instead of a tuple, which means in practice it's impossible to use
the `min_size` argument. This changes the schema to accepts any sequence
of 2 ints that is then coerced into a tuple suitable for passing to the
OpenCV library.
* Improve configuration
* Read new properties for basic device information
Improve tests by mocking less improving stability of tests
* Clean up in device tests
* Support new port management api
* Improve initializing data
* Bump dependency to v28
It is not correct to show warning about "unexpected event type" if EVENT_STATE_CHANGED have no new_state field.
We should show this warning only if it is real unexpected event type.
Run task_done() before continue, because we should tell the queue that the processing on the task is complete
after get().
* Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const
* Fix pylint
* Use in tests
* Search for "client_id"
* Fix tests
* Fix test
* Fix test
* Periodicly log when intergrations are taking a while to setup
When one or more intergrations are taking a while to setup
it is hard to determine which one is the cause. We can
help narrow this down for the user with a periodic log
message about which domains are still waiting to be setup
every 30s.
* 30 -> 60 per discussion
* only log when the integration is actually doing setup
* reduce, fix race in test
* Requires 0.7.18 of elkm1 library to decode LD messages, and uses those messages to reliably set the arming/disarming user when there are more than one area. See https://github.com/home-assistant/core/issues/35310.
* Fixed typo
* Fixed off by one error -- LD command reports 1-based user-numbers which is the changed_by_id we want, but we need 0-based indices as argument to username.
* Bump required version of elkm1, remove logging message I was using for testing; prepping for PR.
* Black formatted
* Fixed bug whereby I needed to ref elements when running against released build of elkm1-lib
* Check that due date is not None
Check that due date is not None, prevents taks without due dates from breaking Calendar API
* Invert None check to reduce indentation
* Add ability to ignore heos discovery
* Fetch player_id, update tests
* Handle failure state
* Update tests as there are two players in the mock now
* Adjust and add more tests
* Strip out player id lookup
* reverts per review
* one more revert
* Update plugwise async, config_flow and multi entity
* Update battery percentage
* Fix yamllint on services
* Fix yamllint on services
* Fix formatting for pyupgrade
* Update homeassistant/components/plugwise/__init__.py
Co-Authored-By: Robert Svensson <Kane610@users.noreply.github.com>
* Add try/except on setup
* Bump module version, battery version and valve position
* Removing sensor, switch, water_heater for later (child) PRs
* Catchup and version bump
* Remove title from strings.json
* Readd already reviewd await try/except
* Readd already reviewed config_flow
* Fix pylint
* Fix per 0.109 translations
* Remove unused import from merge
* Update plugwise async, config_flow and multi entity
* Update battery percentage
* Fix yamllint on services
* Fix yamllint on services
* Bump module version
* Bump module version, battery version and valve position
* Removing sensor, switch, water_heater for later (child) PRs
* Catchup and version bump
* Remove title from strings.json
* Fix pylint
* Fix per 0.109 translations
* Translations and config_flow, module version bump with required changes
* Translations and config_flow, module version bump with required changes
* Fix requirements
* Fix requirements
* Fix pylint
* Fix pylint
* Update homeassistant/components/plugwise/__init__.py
Improvement
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/__init__.py
Improvement
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/__init__.py
Improvement
Co-authored-by: J. Nick Koston <nick@koston.org>
* Include configentrynotready on import
* Update __init__.py
* DataUpdateCoordinator and comment non-PR-platforms
* Fix reqs
* Rename devices variable in favor of entities
* Rework updates with DataUpdateCoordinator
* Peer review
* Peer review second part
* Cleanup comments and redundant code
* Added required config_flow test
* Peer review third part
* Update service was replaced by DataUpdateCoordinator
* Corrected testing, version bump for InvalidAuth, move uniq_id
* Remove according to review
* Await connect (py38)
* Remove unneccesary code
* Show only when multiple
* Improve config_flow, rename consts
* Update homeassistant/components/plugwise/climate.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/plugwise/climate.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Process review comments
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add support for Insteon 2444-222 Micro Open/Close Module
* Avoid breaking changes on cover
* Update homeassistant/components/isy994/cover.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Proceed with startup if an integration setup blocks for more than 30m
* Fix test location
* Fix log call
* naming
* revert
* do not shield from cancelation
* Adjust test since we now cancel when we hit the timeout
* added optional argument to command service
* Fixed crash when optional argument is not provided
* Updated argument description
* fixed lint error
* Fix isort error
* switched to use dict for optional field instead of json string
* switched to use ATTR_PAYLOAD
* fixed test
* actually fixed test
* Improve history api performance
A new option "minimal_response" reduces the amount of data
sent between the first and last history states to only the
"last_changed" and "state" fields.
Calling to_native is now avoided where possible and only
done at the end for rows that will be returned in the response.
When sending the `minimal_response` option, the history
api now returns a json response similar to the following
for an entity
Testing:
History API Response time for 1 day
Average of 10 runs with minimal_response
Before: 19.89s. (content length : 3427428)
After: 8.44s (content length: 592199)
```
[{
"attributes": {--TRUNCATED--},
"context": {--TRUNCATED--},
"entity_id": "binary_sensor.powerwall_status",
"last_changed": "2020-05-18T23:20:03.213000+00:00",
"last_updated": "2020-05-18T23:20:03.213000+00:00",
"state": "on"
},
...
{
"last_changed": "2020-05-19T00:41:08Z",
"state": "unavailable"
},
...
{
"attributes": {--TRUNCATED--},
"context": {--TRUNCATED--},
"entity_id": "binary_sensor.powerwall_status",
"last_changed": "2020-05-19T00:42:08.069698+00:00",
"last_updated": "2020-05-19T00:42:08.069698+00:00",
"state": "on"
}]
```
* Remove impossible state check
* Remove another impossible state check
* Update homeassistant/components/history/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Reorder to save some indent per review
* Make query response make sense with to_native=False
* Update test for 00:00 to Z change
* Update homeassistant/components/recorder/models.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add fan platform
* Add fan discovery schema
* Use constants for dispatcher signal
* Move fan platform to ozw
* Fix fan discovery schema
* Add previous speed to handle value 255
* Make fixture reading more robust
* Add fan tests
* Remove not needed fixture info
* Validate speed
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Decouple media lookup from play_media service
* More explicit input/search validation, cleanup, more tests
* Minor cleanup
* Normalize media_type string in lookup call
* Move key lookup, add tests via service calls
* Always allow play_media service calls
* No need to pass arguments to nested functions
* Add ability to ignore heos discovery
* Fetch player_id, update tests
* Handle failure state
* Update tests as there are two players in the mock now
* Adjust and add more tests
* Strip out player id lookup
* reverts per review
* one more revert
* Check that due date is not None
Check that due date is not None, prevents taks without due dates from breaking Calendar API
* Invert None check to reduce indentation
* Add support for Elexa Guardian water valve controllers
* Zeroconf + cleanup
* Sensors and services
* API registration
* Service bug fixes
* Fix bug in cleanup
* Tests and coverage
* Fix incorrect service description
* Bump aioguardian
* Bump aioguardian to 0.2.2
* Bump aioguardian to 0.2.3
* Proper entity inheritance
* Give device a proper name
* Code review
* fallback to device serial number if no mac available
* make password optional to fix#35904
* update tests to reflect new flow
* fix snake case and AsyncMock
* add comments around why weird things are being done
* add tests
* better error handling in dependency
* dont suppress errors
* add support for multiple devices
* add test for Unauthorized status
* raise error on service call failure
* add last_update_success_time and a failed update interval
* add failed update interval annd valid times to nws
* Revert "add last_update_success_time and a failed update interval"
This reverts commit 09428c9686.
* extend DataUpdateCoordinator
By default media players get a chrome cast icon, which feels
quite wrong for my old style amplifier that doesn't have any
connection to the rest of the word, except for a RS232 port.
* Working PoC
* Store
* Handle subscribing to MQTT and stopping stream when first telegram arrives
* Improve naming
* Now with test
* Better strings
* Fix Martins comments
* Improve mock device patching
* Bump dependency to v27
Add MQTT as after dependency
* Ensure a deleted intergration can be removed
* Update homeassistant/config_entries.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add support for Velux Gates
* Comment expanded and listing sorted alphabetically.
* There are constants in the cover entity integration for the valid device classes. Import and use those here.
* Blank line deleted
* Reformate code because of "CheckFormat" error
* Import only the names we need instead of the whole module
* Reformate code because of "CheckFormat" error
* isort error
* fallback to device serial number if no mac available
* make password optional to fix#35904
* update tests to reflect new flow
* fix snake case and AsyncMock
* add comments around why weird things are being done
* allow lib to create AsyncTransport
* fix transport close issue
* fix zoom only cameras without PTZ presets
* catch profiles without encoding configuration
* also catch ServerDisconnectedError for ptz
* Centralite specific control seq of operation
* Remove Fan safeguards
* Split hvac_action property.
* Refactor hvac_action property.
Current hvac_action logic is Zen Within thermostat specific and differs
a bit from ZCL specs. Implement it as a separate class.
* Refactor hvac_action property for default thermostat
Follow more closely ZCL specs in parsing hvac state of the thermostat.
* allow lib to create AsyncTransport
* fix transport close issue
* fix zoom only cameras without PTZ presets
* catch profiles without encoding configuration
* also catch ServerDisconnectedError for ptz
* Ensure HomeAssistant can startup if homekit fails to load
* Update homeassistant/components/logbook/manifest.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Ensure HomeAssistant can startup if homekit fails to load
* Update homeassistant/components/logbook/manifest.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Initial ZHA climate implementation.
* Add retryable_request decorator.
sort helpers imports.
* Check manufacturer for Climate implementation.
* Default zha.climate.operation_list to [Off]
* Migrate to climate 1.0
* Sort imports, properties and methods.
* Handle 'PRESET_NONE' presets.
* Use pi_heating/cooling_demand for HVAC action prop.
* Implement `running_state` HVAC channel property.
For ZHA thermostats which don't support `pi_heating_demand` or
`pi_cooling_demand' attributes.
* wip fan support
* Refactor retryable request logging.
* Rebase cleanup.
* Update climate discovery.
* Fix ZHA climate restoration.
* Bulk configure attribute reports.
* Use configure_reporting_multiple command for Light
More detailed response parsing of configure_reporting_multiple.
* Use ordered list for HVAC cluster attribute reports.
* Don't mutilate HVAC mode list.
* Add fan_mode property to fan channel.
* Fix type hinting.
* Expose fan mode only.
* Implement fan mode setting.
Drop support for HVAC_FAN_ONLY mode.
* Use ClimateEntity as base class.
* Cleanup debug code.
* Update time display for Sinope.
* Don't do many retries.
* Don't use multi attr reporting configuration.
* Make tests pass.
* Drop support for setpoint change source/amount.
* Cleanups.
* Drop aux heat
* Update tests.
* Drop Sinope temperature display code.
* Update tests.
* Refactor temperature setting.
* Update tests.
* Update Fan tests.
* Lint
* Black.
* Use correct logging levels
* Async remove call removed too much, resulting in disabled entities coming back after a restart
* Calling super().async_remove is no longer needed, changed to self.async_remove
* Yes, they should be sets...
* Add services remote_set_led_on/remote_set_led_off to control changmi_ir led
* pylint: elif => if
* Fix services.async_register => platform.async_register_entity_service
* Update homeassistant/components/xiaomi_miio/remote.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* more fixes
* async
* more fixes
* fix
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Async remove call removed too much, resulting in disabled entities coming back after a restart
* Calling super().async_remove is no longer needed, changed to self.async_remove
* Yes, they should be sets...
The database fields are timezoned via DateTime(timezone=True), so the
default value should be timezoned too. When using cockroachdb this is
fatal and results in the recorder crashing.
* Fire events on homekit TV remote key press
* Changes from code review
* black
* isort
* flake8
* Update tests/components/homekit/test_type_media_players.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update to garminconnect 0.1.13
This will fix body composition sensors being unavailable
* Update requirements_all to garminconnect 0.1.13
* Update requirements_test_all.txt
* Avoid a context switch in the history api
The history api was creating a job to fetch the
states and another job to convert the states to
json. This can be done in a single job which
decreases the overhead of the operation.
* Ensure there is only one sqlalchemy session created per history
query.
Most queries created three sqlalchemy sessions which was
especially slow with sqlite since it opens and closes the
database.
In testing the UI is noticeably faster at generating history
graphs for entites.
* Add additional coverage
* pass hass first to _states_to_json and _get_significant_states
* Avoid a context switch in the history api
The history api was creating a job to fetch the
states and another job to convert the states to
json. This can be done in a single job which
decreases the overhead of the operation.
* Revert to original solution to avoid function redefine each call
* add BleBox lights support
* cherry pick refactoring from #35552
* Inherit from LightEntity instead of Light
Co-authored-by: J. Nick Koston <nick@koston.org>
* import LightEntity instead of Light
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* PyWeMo version bump to 0.4.43
Changes necessary to safely upgrade to pyWeMo 0.4.43. This includes catching ActionExceptions that may be thrown by pyWeMo when it is unable to interact with a physical device.
* Black formatting fix
* Fix isort issues
* Code review changes
* More code review fixes
* Linting fix
* Undo dict.get change
* Change a couple instances of dict[key] to dict.get
* Add and use ELECTRICAL_CURRENT_AMPERE constant
* Add and use ELECTRICAL_VOLTAGE_AMPERE constant
* Rename ELECTRICAL_VOLTAGE_AMPERE to ELECTRICAL_VOLT_AMPERE
* Fix imports
* Migrate to pyinsteon from insteonplm
* Rename devices entities
* Print ALDB even if not loaded
* Add relay to name map
* Change insteonplm to pyinsteon
* Update requirements_all correctly
* Code review updates
* async_set_speed receive std speed value
* default speed to std medium value
* Call async methods for fan on/off
* Comment await required in loop
* Remove emtpy and add codeowner
* Make services async and remove async_add_job call
* Remove extra logging
* New device as async task and aldb load in loop
* Place lock in context bloxk
* Limiting lock to min
* Remove .env file
* Avoid locking in the logging queue handler
We do not need a lock here as the underlying queue is already
thread safe.
* Add coverage for logging handle
* First cut of Rollease Acmeda Pulse Hub integration.
* Acmeda integration improvements:
- Moved common code into a base entity
- Battery level sensor added
- Localisation now working
* Added requirement for aiopulse now that it has been uploaded to PyPI.
* Exclude acmeda integration from coverage check as it relies on a hub being present.
* Fix Travis CI build issues.
* Remove unused constants.
* Remove unused group logic from cover.py
* Removed commented code from base.py
* Remove sensors (battery entities) on removal of hub.
* Remove unused groups from sensor.py
* Acmeda device and entity update made fully asynchronous using subscriptions to remove need for config polling.
* Updated aiopulse version dependency.
Removed non-functional battery charging indication.
* Rationalised common code to update entities into helpers.py
* Fix linting issue.
* Correct additional CI pylint errors.
* Index config_entries by entry_id.
Move entity loading and unloading to __init__.py
Add entry_id to dispatcher signal
Removed now unused polling code hub
Added config_flow unit tests
* Tweak to integration config_entry title.
* Bumped aiopulse module to 0.3.2.
Reduced verbosity of aiopulse module.
* Changed to using direct write of device state.
Removed old style async_step_init config_flow step.
* Remove superfluous battery_level and device_state_attributes from battery entity.
* Removal of unused strings.
Removal of unused create_config_flow helper.
Removal of stale comment.
* Remove use of shared container to track existing enities.
Moved removal and deregistration of entities to base class through use of dispatch helper.
* Fixed strings.json
* Fix incorrect use of remove instead of pop on dict.
* Add support for tilting covers, bump aiopulse version number.
* Bump aiopulse version to v0.3.4.
Fixed bug in cover supported_features.
* Bumped aiopulse version to 0.4.0
Update acmeda .coveragerc exclusions
* Removed already configured hub check from __init__.py async_setup_entry
Removed passing in hass reference to base entity class
Renamed entity async_reset to async_will_remove_from_hass
Changed device_info and properties
Migrated to CoveEntity from CoverDevice
Added dispatched_connect cleanup on hub removal
Removed unused entries from manifest
Removed override of battery icon
Renamed translations folder
* Reversed unintended change to .coveragerc
* Fixed config flow for multi-hub discovery.
* Acmeda enhancements as requested by MartinHjelmare
* Force import to connect to hub to retrieve id prior to creating entry
* Remove YAML configuration support.
* Tidied up config_flow and tests:
- removed unnecessary steps
- fixed typos
* Removed storage of hub in config_flow.
* add config option to set timeout for wiffi devices
Wiffi devices allow to configure the update period (=
full_loop_minutes). The integration shall respect the configured update
period and therefore need a configuration for the timeout, too.
* Move timeout from config flow to option flow
* add test for option flow
* Add support for "Window covering controller"
Some window cover devices such as Sunricher SR-ZG9080A are identified in deconz as "Window covering controller".
We need to include this device type in const.py to be integrated as type "cover" in home-assistant.
* Added Window covering controller to deconz tests
* Prevent updater from delaying startup
The updater sometimes times out as seen in
#33833 and the linked issues. The issue was
presenting again today as it appears the service
is overloaded again.
* s/hass.loop/asyncio/g
* Add config flow to gogogate2 component.
* Using a more stable gogogate api.
* Getting config flows working better by using different downstream library.
* Fixing options not getting default values.
Adding availability to cover entity.
* Simplifying return types of function.
* Address PR feedback.
* Making user config flow not abort.
* Using DataUpdateCoordinator.
* Addressing PR feedback.
* Using standard method for using hass.data
* Split auth fail test into separate tests.
* Use built in queue log handlers to avoid formatting logs in the event loop
Logging is now formatted and written in another thread to
ensure there is minimal impact on the event loop when
a log message is processed.
This change replaces the existing AsyncHandler log handler
as python 3.7+ now offers an off the shelf solution
* add a simple test
* s/async_migrate_log_handlers_to_queue/async_activate_log_queue_handler/g
* Fix for creating the device name
Creating the devicename included a typo and was missing the custom (preferred) name set by the OZW Admin tool.
* update comments
* Add device triggers to support setting turn_on event
* Add turn on event
* Add unique_id based on config entry
* Adjust tests for addition of uuid
* Supported features are now always same
* Switch to player_setup fixture that actually start platform
* Update homeassistant/components/arcam_fmj/const.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* openwindow0: this is the part for the HA itself
* Update homeassistant/components/tado/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/tado/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* new version after review
Co-authored-by: J. Nick Koston <nick@koston.org>
* Provide yeelight unique_id using ssdp discovery
* Fixes
* Comment fix
* Cleanup initialization logic and add unique id to binary sensor
* Update homeassistant/components/yeelight/__init__.py
Co-authored-by: Teemu R. <tpr@iki.fi>
* Update homeassistant/components/yeelight/__init__.py
Co-authored-by: Teemu R. <tpr@iki.fi>
* Update comment
* Update comment
* Fix wrong model docstring
Co-authored-by: Teemu R. <tpr@iki.fi>
* Fix for creating the device name
Creating the devicename included a typo and was missing the custom (preferred) name set by the OZW Admin tool.
* update comments
* Add config flow to pi-hole
* Add config flow tests
* Change PlatformNotReady to ConfigEntryNotReady
* Improve config flow
* Add @shenxn as codeowner
* Use entity_id as unique id
* Remove .get with [] for required fields
* Remove unique id from config flow
* Replace some strings with references
* Fix api_key string
* Fix service api_key check
* Remove unused DuplicatedNameException
- add expose attribute function and default value
- default climate havc_mode to "heat" if modes are not supported
- support `update_entity` service call
* New forked_daapd component
* Bunch of changes
Add config flow and zeroconf
Add zones on callback when added by server
Add password auth
Add async_play_media for TTS
Add media_image_url
Add support for pipe control/input from librespot-java
Improve update callbacks
* Refactor as per code review suggestions
Move config_flow connection testing to pypi library (v0.1.4)
Remove use of ForkedDaapdData class
Decouple Master and Zone data and functions
Add updater class to manage websocket and entity updates
* More changes as per code review
Avoid direct access to entities in tests
Bump pypi version
Mark entities unavailable when websocket disconnected
Move config tests to test_config_flow
Move full url creation from media_image_url to library
Move updater entity from master to hass.data
Remove default unmute volume option
Remove name from config_flow
Remove storage of entities in hass.data
Use async_write_ha_state
Use signal to trigger update_options
Use unittest.mock instead of asynctest.mock
* Yet more changes as per code review
Add more assertions in tests
Avoid patching asyncio
Make off state require player state stopped
Only send update to existing zones
Split up some tests
Use events instead of async_block_till_done
Use sets instead of lists where applicable
Wait for pause callback before continuing TTS
* Remove unnecessary use of Future()
* Add pipes and playlists as sources
* Add support for multiple servers
Change config options to add max_playlists+remove use_pipe_control
Create Machine ID in test_connection and also get from zeroconf
Modify hass.data storage
Update host for known configurations
Use Machine ID in unique_ids, entity names, config title, signals
* Use entry_id as basis for multiple entries
* Use f-strings and str.format, abort for same host
* Clean up check for same host
* Add integration for wiffi devices
wiffi devices are DIY board manufactured by stall.biz.
Several devices are available, e.g. a weather station (weatherman), an
indoor environmental sensor (wiffi-wz) and some more.
This intgration has been developed using a weatherman device, but should
also work for other devices from stall.biz.
* Fix pylint warning
* Use WIFFI / STALL WIFFI instead of wiffi to be consistent with stall.biz
* Don't update disabled entities.
* fix complains
- move wiffi specific code to pypi
- remove yaml configuration code
* incorporate various suggestions from code review
* fix remaining comments from Martin
* fix comments
* add tests for config flow
* fix comments
* add missing requirements for tests
* fix pylint warnings
* fix comments
* fix comments
remove debug log
rename .translations to translations
* rebase and adapt to latest dev branch
* Update homeassistant/components/wiffi/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/wiffi/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* fix missing import
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use helper functions for exception handling
* Create a separate class to handle communication with the device
* Update manifest
* Use coroutine for service setup
* Fix sensor update
* Update tests
* Fix MP1 switch
* Add device.py to .coveragerc
* Remove unnecessary blocking from test_learn_timeout
* Change access method for entries with default values
* Make the changes suggested by MartinHjelmare
* Remove dot from debug message
* Use underscore for unused variable
* Patch aiohttp client session close
* Add test
* Restore close regardless of auto_cleanup
* Close session instead of detaching and do not restore
* Delint test
* Add frame helper
* Use frame helper
* Test warning log when closing session
* Clean up
* Correct docstring
* Do not change shutdown
* Fix tests
* Ensure homekit_controller recieves zeroconf c# updates
If an integration has a homekit config flow step
homekit controller would not see updates for
devices that were paired with it and would not
rescan for changes.
* Only send updates to homekit controller if the device is paired
This avoids the device showing up a second time.
* remove debug
* fix refactor error
* add binary sensor platform to zwave_mqtt
* add tests for binary_sensor
* fix tests
* device class is required value
* Update homeassistant/components/zwave_mqtt/binary_sensor.py
use colon as separator
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* extend tests
* code optimize
* add test for enabling a legacy binary sensor
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
When the websocket is created `SSLContext.load_default_certs` is called
each time which opens up the system default ssl certs file and reads it in
Normally this goes unnoticed, however since there are frequent connects
and disconnects of the websocket it was noticeable.
* Add validator for battery scan option
Add a validator for the track battery option.
Also add the possibility of configuring the battery scan interval.
* Set config defaults on the validator
Set the defaults on the platform schema, and not in the initialization code.
* Update requirements_all.txt
Updated to vigilancemeteo version 3.0.1
* Update requirements_test_all.txt
Updated to vigilancemeteo version 3.0.1
* Update manifest.json
Update to correct typo error
* rewrite library
* Update strings.json
* fix updated with empty reply
* dont use entity_id
* atag_id
* use super init instead
* original ids to prevent breaking change
* Universal Powerline Bus - Link Event
* Bump lib version.
* Update homeassistant/components/upb/__init__.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Consolidate value conversion functions
* Update to sensor
* Fix property name
* Revise sensors and state reporting per code standards
* Update uom function and revert to property
Each ServerBrowser currently runs in its own thread which
processes every A or AAAA record update per instance.
As the list of zeroconf names we watch for grows, each additional
ServiceBrowser would process all the A and AAAA updates on the network.
To avoid overwhemling the system we pre-filter here and only process
DNSPointers for the configured record name (type)
* Ensure camera stream can be restarted after failure
* If ffmpeg failed to start, was killed, or the iOS device
closed the stream right away, the stream could never
be started until the HomeKit bridge was restarted.
* watch ffmpeg instead of checking only once
* handle forceful shutdowns gracefully
* Increase coverage
* lutron_caseta: allow for multiple bridges; use config entries
Refactor to use config entries/flows, but only implemented import
(async_setup) flow handler for now.
* lutron_caseta: config_flow.py pylint hint
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* lutron_caseta: tweaks to __init__.py per PR feedback
* lutron_caseta: add config_flow tests
* lutron_caseta: verify connectivity to bridge
check connectivity before creating config entry; cleanup translation/strings
* lutron_caseta: allow for multiple bridges; use config entries
Refactor to use config entries/flows, but only implemented import
(async_setup) flow handler for now.
* lutron_caseta: config_flow.py pylint hint
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* lutron_caseta: tweaks to __init__.py per PR feedback
* lutron_caseta: add config_flow tests
* lutron_caseta: verify connectivity to bridge
check connectivity before creating config entry; cleanup translation/strings
* lutron_caseta: add error logging when exception is encountered checking connectivity
* lutron_caseta: tests mock bridge creation, not ha-side connectivity check
* lutron_caseta: catch more specific Error types while checking bridge conn.
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move opengarage code to separate library
* Move opengarage code to separate library
* Move opengarage code to separate library
* remove unique_id
* style
* Add names for the homematic garage door states
* Use None instead of "unknown"
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
Co-authored-by: Pascal Vizeli <pascal.vizeli@syshack.ch>
* Re-evaluate template on group member state change
* Use named groups for entity extraction regex
This will avoid unnecessary edits of match indices if the regex is
amended in the future
* Improve test coverage
* increase coverage and cleanup BleBox cover
* test entity properites via the `state` property
* properly test entity properities
* properly mock io call
* ISY994 Add support for climate platform
Remove services from Climate (not added yet)
* Incorporate suggestions based on review.
* Collect string literals to Const. Rename device to entity
* Fix merge error
* Simplification of upnp component
* Make update interval configurable
* Description
* Require minimal value of 30
* Black
* Linting
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use tests.async_mock instead of asynctest
* Remove unnecessary existence check
* Improve songpal service registering
* Add tests
* Seperate device api from entity api
* Improve disconnect log messages
* Improve tests
* Rename SongpalDevice to SongpalEntity
* Improve reconnecting
* Remove logging and sleep patch from tests
* Test unavailable state when disconnected
* Rename SongpalEntity.dev to _dev
* Add quality scale to manifest
* Initial commit for BSBLan Climate component
The most basic climate functions work.
* Delete manifest 2.json
wrongly added to commit
* fix incorrect name
current_hvac_mode
* update coverage to exclude bsblan
* sorted and add configflow
* removed unused code, etc
* fix hvac, preset mix up
now it sets hvac mode to none and preset to eco
* fix naming
* removed commented code and cleaned code that isn't needed
* Add test for the configflow
* Update requirements
fixing some issues in bsblan Lib
* Update coverage file to include configflow bsblan
* Fix hvac preset is not in hvac mode
rewrote how to handle presets.
* Add passkey option
My device had a passkey so I needed to push this functionality to do testing
* Update constants
include passkey and added some more for device indentification
* add passkey for configflow
* Fix use discovery_info instead of user_input
also added passkey
* Fix name
* Fix for discovery_info[CONF_PORT] is None
* Fix get value CONF_PORT
* Fix move translation to new location
* Fix get the right info
* Fix remove zeroconf and fix the code
* Add init for mockConfigEntry
* Fix removed zeroconfig and fix code
* Fix changed ClimateDevice to ClimatEntity
* Fix log error message
* Removed debug code
* Change name of device.
* Remove check
This is done in the configflow
* Remove period from logging message
* Update homeassistant/components/bsblan/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add passkey
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add integration for Flick Electric NZ
* Start adding Config Flow and external API
* Second Wave of Config Flow and API implementation
* Fix test (errors is None instead of blank array?)
* Don't update sensor if price is still valid
* Add input validation
* Fix linting for DOMAIN
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Remove platform schema (config is by entries only)
* Don't catch AbortFlow exception
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update test
* Re-arrange try-catch in config flow
* Fix linting in sensor.py
* Staticly define list of components
* Fix test exceptions
* Fix _validate_input not being awaited
* Fix tests
* Fix pylint logger
* Rename test and remove print debug
* Add test for duplicate entry
* Don't format string in log function
* Add tests __init__ file
* Remove duplicate result assignment
* Add test for generic exception handling
* Move translations folder
* Simplify testing
* Fix strings/translation
* Move to "flick_electric" as domain
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* ISY994 Add Config and Options Flow
Add tests for config flow
Fix test
Update Tests
* Fix merge errors
* Update homeassistant/components/isy994/strings.json
Co-authored-by: J. Nick Koston <nick@koston.org>
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* Fix patching in tests to not actually start Home Assistant
Co-authored-by: J. Nick Koston <nick@koston.org>
* Refactor ZHA config flow
Present more descriptive list of radio types when user has to pick one.
* Update docstring.
* Add some common models to EZSP radio.
* Add more model names
More model names, less english since radio types won't be translated.
* Split BinarySensor Entity
* Fix Device Class for Insteon
* ISY994 Improved device sorting (incl Z-Wave Cats) post-PyISYv2
- Z-Wave device classification using new properties.
- ISY Z-Wave Devices can be classified by their Z-Wave categories, since `node_def_id` does not provide useful information for these nodes.
- Better classification of binary_sensors.
- Incorporate better classifications of different types of binary_sensor devices supported by the ISY. These are all field tested/requested based on the HACS-ISY994 version and feedback given through the Community.
- State Unknown updates for binary_sensors.
- Properly fix unknown states on startup for binary_sensors with multiple sub-nodes that don't report the status after an ISY restart until that subnode is activated/triggered the next time. Now instead of adding nodes as unknown status, it adds them in the "assumed safe" state (usually off). This his helpful for things like motion sensor low battery nodes, which may show "unknown" for 12 months before turning "ON" (low batt).
- Fix for heartbeat devices (home-assistant/core#21996)
- Heartbeat devices toggle between both DON and DOF commands, each day when it sends the heartbeat it sends the opposite. Update heartbeat nodes to look for both.
* Additional sorting fixes
* Improve client tracker to be more comprehensible and streamlined
Improve block switches
Improve tests
* Small clean up
* Add descriptions on ssid test
* Improve test
* Make polling default off, only POE clients left to verify
* Minor improvements
* On removal cancel scheduled updates
* POE works without polling now
* Combine else and if to an elif
* Initial version.
* Tests.
* Refactored tests.
* Update requirements_all
* Increase test coverage. Catch exception.
* Update .coveragerc
* Fix lint msg.
* Tweak test (more to force CI build).
* Update based on PR comments.
* Change unique_id to use stable string.
* Add Universal Powerline Bus "link" support.
* Fix missed call.
* Revert botched merge.
* Update homeassistant/components/upb/light.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Three changes.
Update service schema to require one of brightness/brightness_pct.
Fix bug in setting brightness to zero.
Replace async_update_status and replace with async_update.
Co-authored-by: J. Nick Koston <nick@koston.org>
* modbus sensor: string data_type
Adds support for a string data_type. This allows the reading of holding registers that contain ascii string data
* Add modbus sensor string data_type #35269
Fingers crossed that I am putting these file in the correct location this time
* Delete const.py
* Delete sensor.py
* Add files via upload
* modbus sensor - add string support. Upload from local dev environment
* fix executable stauts
* fix flake8 failure
* Remove unnecessary pylint exceptions
* Move up some change to binary_sensors and switch. Fix program d.s.a's.
* ISY994 Basic support for PyISYv2
- Bare minimum changes to be able to support PyISYv2.
- Renaming imports and functions to new names.
- Use necessary constants from module.
- **BREAKING CHANGE** Remove ISY Climate Module support.
- Climate module was retired on 3/30/2020: [UDI Annoucement](https://www.universal-devices.com/byebyeclimatemodule/)
- **BREAKING CHANGE** Device State Attributes use NodeProperty
- Some attributes names and types will have changed as part of the changes to PyISY. If a user relied on a device state attribute for a given entity, they should check that it is still there and formatted the same. In general, *more* state attributes should be getting picked up now that the underlying changes have been made.
- **BREAKING CHANGE** `isy994_control` event changes (using NodeProperty)
- Control events now return an object with additional information. Control events are now parsed to the friendly names and will need to be updated in automations.
Remove cast
* PyISY v2.0.2, add extra UOMs, omit EMPTY_TIME attributes
* Fix typo in function doc string.
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Homekit cameras - Add codecs support
* Add valid_codecs + move audio application parameter
* Increase video bufsize
* Increase audio bufsize
* Update config flow to be aware of the copy option
* Add tests for copy video and audio codec
* remove unused from test
* remove unused from test
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add config flow to songpal
* Add config flow to songpal
* Add songpal to migrated service in discovery
* Improve songpal/set_sound_setting service
* Remove songpal config flow from .coveragerc omit
* Bump python-songpal to 0.12 and fix exception handling
* Revert "Improve songpal/set_sound_setting service"
This reverts commit 9be076ab52e21f268322572c36709a17d41db771.
* Code style fix
* Add connections to device_info
* Fix pylint
* Ignore braava tv
* Fix test warning
* Add @shenxn as codeowner
* Remove model from configuration data
* Get name from device in user step
* Add unload entry support
* Delete translations as it will get generated as part of CI
* Code cleanup
* Fix typo
* Remove _show_setup_form
* Change configuration from media_player to songpal
Co-authored-by: Raman Gupta <7243222+raman325@users.noreply.github.com>
* Start gateway using new zigpy init.
Update config entry data import.
Use new zigpy startup.
Fix config entry import without zha config section.
Auto form Zigbee network.
* Migrate config entry.
* New ZHA config entry flow.
Use lightweight probe() method for ZHA config entry validation when
available. Failback to old behavior of setting up Zigpy app if radio lib
does not provide probing.
* Clean ZHA_GW_RADIO
* Don't import ZHA device settings.
* Update config flow tests.
* Filter out empty manufacturer.
* Replace port path with an by-id device name.
* Rebase cleanup
* Use correct mock.
* Make lint happy again
* Update tests/components/zha/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zha/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zha/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use executor pool for IO
* Address comments.
Use AsyncMock from tests.
* Use core interface to test config flow.
* Use core interface to test config_flow.
* Address comments. Use core interface.
* Update ZHA dependencies.
* Schema guard
* Use async_update_entry for migration.
* Don't allow schema extra keys.
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* pyload API statusServer doesn't take parameters
Remove json payload from API call to statusServer for retrieving current download speed.
See maintainers message in: pyload/pyload#3622 (comment)
Skip duplicated call to update function.
* Lint sensor.py
remove empty line
- Move core Entity Class definitions to separate file.
- New ISYNodeEntity and ISYProgramEntity base classes.
- Update inheriances on other classes.
- Move helper functions to separate file.
* Add sensor platform
* Fix signal name
* Add sensor discovery schema
* Add test for disabled entities
* Add test for enabling advanced sensor
* Add additional fake sensors and tests for device classes
* More device class tests
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* ISY994 Structure updates in prep for PyISYv2 (Part 1)
- Correct node categorization.
- Move constants to separate file.
- Consolidate Logging to Constants file.
- Use Home Assistant Constants where possible.
- Use string literals where possible.
- Rename "domain" to "platform" in most places.
- Add additional device support (NODE_FILTER updates).
* Update categorize_programs per review
* add @shbatm as codeowner for ISY994 integration
* Add homekit camera support
* Cleanup pyhapcamera inheritance
* Add camera to homekit manifest
* Use upstream pyhap server handler in homekit
* Remove unused homekit constants
* Fix lint errors in homekit camera
* Update homekit camera log messages
* Black after conflict fixes
* More conflict fixes
* missing srtp
* Allow streaming retry when ffmpeg fails to connect
* Fix inherit of camera config, force kill ffmpeg on failure
* Fix audio (Home Assistant only comes with OPUS)
* Fix audio (Home Assistant only comes with OPUS)
* Add camera to the list of supported domains.
* add a test for camera creation
* Add a basic test (still needs more as its only at 44% cover)
* let super handle reconfigure_stream
* Remove scaling as it does not appear to be needed and causes artifacts
* Some more basic tests
* make sure no exceptions when finding the source from the entity
* make sure the bridge forwards get_snapshot
* restore full coverage to accessories.py
* revert usage of super for start/stop stream
* one more test
* more mocking
* Remove -tune zerolatency, disable reconfigure_stream
* Restore -tune zerolatency
Co-authored-by: John Carr <john.carr@unrouted.co.uk>
Co-authored-by: J. Nick Koston <nick@koston.org>
* start implementation
* handle members correctly
* fix group member info
* align groupable devices with group members
* handle group endpoint adding and removing
* update add group
* update group and group member
* update create group
* remove domain check
* update test
* remove temporary 2nd groupable device api
* update test
* rename validator - review comment
* fix test that was never running
* additional testing
* fix coordinator descriptors
* remove check that was done twice
* update test
* Use AsyncMock()
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Add query and sync
* Update description of call_query
* Remove backup files accidentally committed to repo
* Update after pysqueezebox refactor
* Use entity service helper
* Implement suggested changes
* Fix linter error in services.yaml
* Fix long lines in services.yaml
* Make emulated hue detectable by Busch-Jaeger free@home SysAP
* Emulated hue: Remove unnecessary host line from UPnP response
* Test that external IPs are blocked for config route
* Add another test for unauthorized users
* Change hue username to nouser
nouser seems to be used by the official Hue Bridge v1 Android app and is
used by other projects as well
Co-authored-by: J. Nick Koston <nick@koston.org>
* edl21: Add 'name' option
* edl21: Include domain and electricity ID in unique ID
As a side-effect, this makes electricity IDs mandatory, i.e. devices
which don't transmit their ID won't register any sensors.
* edl21: Implement upgrade path for unique IDs
* Update homeassistant/components/edl21/sensor.py
Drop DOMAIN from unique ID.
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Return emulated hue id for update requests
* Emulated Hue: Rename function argument to match its content
* Use HTTP status consts throughout the test
* Use HTTP status consts in UPnP test
* Add support for refreshing synology_dsm sensors
Now supports `home_assistant.update_entity` service
* Don't immediately update sensors on add
This fixes all sensors being forcefully refreshed when setup.
* Fix typing in component service method
* Add required features to cover service registration
* Fix template cover tilt features
* Delint template cover tests
* Retrieve the name of the Proliphix thermostat before adding the entities
* The proliphix module provides hvac_state, not hvac_mode
* Removed update before add_entities. Moved the setting of the name into the update function instead.
* Disentangled hvac_mode and hvac_action
* Ran black and isort
* added support for more SNMP variable types
* Fix SNMP pull request formatting
* retry fix linting errors
* Created SNMP vartype dict
* Moved to Integer instead of Integer32 as default vartype
* Update homeassistant/components/snmp/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/snmp/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/snmp/switch.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Get rid of internal library code and use pulsectl library to communicate
with PulseAudio server.
This is a breaking change as the library uses the much more powerful
native interface instead of the CLI interface, requiring the need to
change the default port.
On the bright side, this also solves some issues with the existing
implementation:
- There was no test if the complete list of loaded modules was
already received. If not all data could be read at once, the
remaining modules not yet in the buffer were considered absent,
resulting in unreliable behavior when a lot of modules were loaded
on the server.
- A switch could be turned on before the list of loaded modules was
loaded, leading to a loopback module being loaded even though this
module was already active (#32016).
Improve Serial sensor platform with full options for configuring the serial port.
bytesize, parity, stopbits, xonxoff, rtscts, dsrdtr.
The default values are unchanged so it is 100% compatible with previous config.
* Config flow for homekit
Allows multiple homekit bridges to run
HAP-python state is now stored at .storage/homekit.{entry_id}.state
aids is now stored at .storage/homekit.{entry_id}.aids
Overcomes 150 device limit by supporting
multiple bridges.
Name and port are now automatically allocated
to avoid conflicts which was one of the main
reasons pairing failed.
YAML configuration remains available in order to offer entity
specific configuration.
Entries created by config flow can add and remove
included domains and entities without having to restart
* Fix services as there are multiple now
* migrate in executor
* drop title from strings
* Update homeassistant/components/homekit/strings.json
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Make auto_start advanced mode only, add coverage
* put back title
* more references
* delete port since manual config is no longer needed
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add overlay options wrapper to rpi_camera
* Refactor to set config yaml section under the top level integration domain key
* Remove return values that are not checked
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Remove superfluous debug log messages
* Return if not set up via discovery
* Add convenience reference to hass.data[DOMAIN]
* Black formatting
* Isort
* Exclude all rpi_camera modules
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Some amplifiers/receivers do not report any volume (due to them not
knowing), for example NAD C 356BEE is documented to return an empty
string for volume.
At least don't crash when we get None back.
* Add support for Numato 32 port USB GPIO boards
Included are a binary_sensor, sensor and switch component
implementations. The binary_sensor interface pushes updates via
registered callback functions, so no need to poll here.
Unit tests are included to test against a Numato device mockup.
* Refactor numato configuration due to PR finding
* Resolve minor review findings
* Bump numato-gpio requirement
* Load numato platforms during domain setup
According to review finding
* Guard from platform setup without discovery_info
According to review finding
* Move numato API state into hass.data
According to review finding.
* Avoid side effects in numato entity constructors
According to review finding
* Keep only first line of numato module docstrings
Removed reference to the documentation. Requested by reviewer.
* Minor improvements inspired by review findings
* Fix async tests
Pytest fixture was returning from the yield too early executing teardown
code during test execution.
* Improve test coverage
* Configure GPIO ports early
Review finding
* Move read_gpio callback to outside the loop
Also continue on failed switch setup, resolve other minor review
findings and correct some error messages
* Bump numato-gpio requirement
This fixes a crash during cleanup. When any device had a communication
problem, its cleanup would raise an exception which was not handled,
fell through to the caller and prevented the remaining devices from
being cleaned up.
* Call services directly
Define local helper functions for better readability.
Resolves a review finding.
* Assert something in every test
So not only coverage is satisfied but things are actually tested
to be in the expected state.
Resolves a review finding.
* Clarify scope of notification tests
Make unit test for hass NumatoAPI independent of Home Assistant (very basic test of notifications).
Improve the regular operations test for notifications.
* Test for hass.states after operating switches
Resolves a review finding.
* Check for wrong port directions
* WIP: Split numato tests to multiple files
test_hass_binary_sensor_notification still fails.
* Remove pytest asyncio decorator
Apears to be redundant. Resolves a review finding.
* Call switch services directly.
Resolves a review finding.
* Remove obsolete inline pylint config
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Improve the numato_gpio module mockup
Resolves a review finding.
* Remove needless explicit conversions to str
Resolves review findings.
* Test setup of binary_sensor callbacks
* Fix test_hass_binary_sensor_notification
* Add forgotten await
Review finding.
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix async scene conversion in hunter douglas powerview
* Update homeassistant/components/hunterdouglas_powerview/scene.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Bump arcam-fmj with better connection failed support
* Log unexpected exceptions in arcam client
* Consider undetected as 2ch to match OSD
* Ask for explicit update on start
* Manual Alarm Control Panel: use proper "Arming" state
* Update previous and next attributes
* add CONF_ARMING_TIME
* Split up arming and pending time, pending_time --> arming_time
* update tests
* fix issort
* fix issort
* fix demo platform
* fix alarm test
* remove arming_time from the triggered state
* Match previous default "delay_time"
* fix tests
* fix arming state when triggering
* fix arming _arming_time_by_state for Triggering state
* change to not in list
* Update homeassistant/components/manual/alarm_control_panel.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* async_update_ha_state -> async_write_ha_state
* black formatting
* add Callback
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* import callback
* update device triggers alarm_control_panel
* Update test_device_trigger.py
* Update device_trigger.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Rename BinarySensorDevice to BinarySensorEntity
* Tweak
* Move deprecation warning to __new__, add test
* Move deprecation warning back to __init__
* Move deprecation warning to __init_subclass
* Rollback modbus to version 0.107.7
Update manifest to not use async.
Rollback entities to sync version.
Keep newer modifications apart from async.
Rollback __init__ to sync version but keep the new functionality.
add async sub directory
Adding the current (not working) version in a sub directory,
to allow easy sharing with a few alfa testers.
The async version are to be updated to use the serial/tcp already
available instead of the flaky pymodbus version. pymodbus is still
needed to encode/decode the messagess.
Update test cases to reflect sync implementation, but
keep the new functionality like e.g. conftest.py.
* do not publish async version
The async version will be made available in a forked repo, until
it is ready to replace the production code.
* add pyserial to manifest
pymodbus is very developer oriented and assumes every developer
adapt the requierements.txt to his/hers needs.
Our requirements.txt is different it contains all posibilities allowing
user to later change configuration without having to install extra
packages.
As a consequence manifest.json needs to include the pyserial.
* modbus: make truly async client creation
Make hass call listen_once async.
Integrate content of start_modbus into async_setup.
Do not use the boiler plate create tcp client function from
pymodbus as it is sync, and also does not work well with asyncio,
instead call the init_<type> directly, since that is async.
* both component/modbus and component/serial uses pyserial-async
but with slighty different version requirements.
Combined the 2.
* Review 1
* Review 2
* Review
@staticmethod is no good, because the function uses class variables.
* Review
Pytest is sometimes a bit cryptic, lets hope this does it.
* Display a QR code for homekit pairing
This will reduce the failure rate with HomeKit
pairing because there is less chance of entry
error.
* Add coverage
* Test that the qr code is created
* I cannot spell
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* bravia-tv version bump
* Fix Auth Cookies
- Fix authentication cookie expiration.
- Remove obsolete error handling (since bravia-tv==1.0.2)
- Remove obsolete mac address references. (since bravia-tv==1.0.2)
- Update tests.
* fix async_refresh_playing_info
* Improve code format
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Config_entry needs mac address for HA restart
This was mistakenly taken out. Home-Assistant needs to store mac address in
case restarted. TV needs to be on to acquire mac address. This is neccesary
to allow TV to be turned on by Home-Assistant after Home-Assistant is
restarted.
* Skip update() during state changes
It is best for performance to skip updates during state change because
bravia.turn_on() will commonly push async_update() beyond it's update
interval.
* update tests
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* 0.2.0 of the btsmarthub_devicelist package makes it compatable with BT's home hub 2.
The API has changed in the new version so this change also makes the component code compatible with the changes to the library.
* Update homeassistant/components/bt_smarthub/device_tracker.py
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/bt_smarthub/device_tracker.py
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Remove dep on config in BTSmartHubScanner
This should make BTSmartHubScanner easier to test as you can pass in a mock smarthub_client
* Black format bt_smarthub
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add support for Lutron Keypad LEDs
* Removed unneeded attribute definitions
* Pull initial state from Lutron on startup
* Format updates per code review
* Altered caching code to only fetch state if needed
* Update homeassistant/components/lutron/switch.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Cloud pylint is also offended by this ;)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update state after adding a new torrent
* Use cached torrents list in check_started_torrent_info
* Add torrent_info to all sensors
* Add torrent_info for active torrents
* Fix typo
* Update codeowners
* Do not set eta if it's unknown
* Fix codeowners
* Extract TransmissionSpeedSensor
* Extract TransmissionStatusSensor
* Extract TransmissionTorrentsSensor
* Refactor device_state_attributes() and update()
* Remove unused methods
* Use async_on_remove
* Fix sensor update
* Add transmission.remove_torrent service
* Add transmission_removed_torrent event
* Fix naming
* Fix typo in services.yaml
* Added support for white value in Template Light integration.
* Tests now working.
* Clean up
* Make template more robust
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add Islamic Prayer Times config_flow
* Add Islamic Prayer Times config_flow
* handle options update and fix tests
* fix sensor update handling
* fix pylint
* fix scheduled update and add test
* update test_init
* update flow options to show drop list
* clean up code
* async scheduling and revert state to timestamp
* fix update retry method
* update strings
* keep title as root key
* Fix serial integration connection stability
Retry to connect if serial device is not available on start, or connection is lost.
Added some more log entries upon connection or when errors are encountered.
* Updated code based on review
* Fixed exception indentation
* Handle SerialException
* Sort imports
* Update homeassistant/components/serial/sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/serial/sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* More clean up
* Format and delint
* Extract error handler
* Clean up stop handler
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move removal of sensor entities into a base class
* Fix martins comments on sensors
* Reflect sensor changes on device_tracker platform
* Reflect sensor changes on switch platform
* Improve layering
* Make sure to clean up entity and device registry when removing entities
* Fix martins comments
* HomeKit: Store generated aid against unique_id where possible
* Fix conflict
* Fix max accessories check
* homekit counts the bridge as an accessory
* Add coverage for aidmanager
* prepare for merge
Co-authored-by: J. Nick Koston <nick@koston.org>
nad_receiver received a few fixes in 0.0.12, which enables the integration
for me. I assume it may depend on the receiver model, but my receiver only reports
mute state and volume when it's on, while the library used to assume to always
get a reply. With 0.0.11 the nad integration simply excepts on startup,
after bumping the version up it works.
Fixes this:
2020-04-18 22:59:38 ERROR (MainThread) [homeassistant.components.media_player] nad: Error on device update!
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 324, in _async_add_entity
await entity.async_device_update(warning=False)
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 476, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/nad/media_player.py", line 195, in update
if self._nad_receiver.main_mute("?") == "Off":
File "/usr/local/lib/python3.7/site-packages/nad_receiver/__init__.py", line 71, in main_mute
return self.exec_command('main', 'mute', operator, value)
File "/usr/local/lib/python3.7/site-packages/nad_receiver/__init__.py", line 62, in exec_command
return msg.decode().strip().split('=')[1]
IndexError: list index out of range
* Remove side effects from properties
* Remove redundant return value in async_send_command
* Move callback registeration to async_added_to_hass
* Code cleanup for roomba
* Add device type
* Use snake_case for devtype
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Validate device type as positive int
* Add device type 0x5f36 to switch
* Use default type for sensors
* Add RM4 to switch platform
* Use snake_case for devtype
* Support multiple types of remote
* Validate ip address
* Improve code readability
* Add const.py to .coveragerc
* Use None for unknown device types
* Fix sensors and standardize platform schemas
* Fix if statement
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Fix signal collision in tado with multiple accounts
Tado signals were not unique enough to prevent collisions
between accounts with the same zone ids.
* Bump upstream to fix multiple tado accounts
* switch signal undo to async_on_remove
* Bump version now that upstream is released
* bump python-tado
* While its only the dep that changed since the last run, best to force another CI to be sure
* Add Braava support to iRobot Roomba component
* Replace async_add_job with async_add_executor_job in roomba
* Improve readability in roomba
* Improve error handling in roomba
* Cleanup async_update in roomba
* Split into multiple files in roomba
* Hide protocal details in braava
* Switch to push in braava
* Bump roombapy version to 1.5.1
* Add roomba files to .coveragerc
* Fix typo
* Remove side effects from init in roomba
* Implement StateVacuumDevice in Roomba
* Add IRobotEntity base class to braava
* Fix state in roomba
* Add @shenxn as a codeowner of braava
* Updating the panasonic_viera component
* Updating .coveragerc
* Removing testplatform
* Updating strings.json
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Adding tests and stuff
* Fixing permission issues
* Ignoring Pylint warnings
* Fixing one more Pylint warning
* Refactoring
* Commiting changes - part 1
* Commiting changes: part 2
* Turning unknown error logs into exception logs
* Update strings.json
* Rebasing
* Updating the panasonic_viera component
* Removing testplatform
* Updating strings.json
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Commit before rebase
* Adding tests and stuff
* Fixing permission issues
* Ignoring Pylint warnings
* Fixing one more Pylint warning
* Refactoring
* Commiting changes - part 1
* Commiting changes: part 2
* Turning unknown error logs into exception logs
* Adding pt-BR translation
* Removing Brazilian Portugues translations
* Modifying error handling
* Adding SOAPError to except handling
* Updating translation
* Refactoring async_step_import
* Fixing indentation
* Fixing requirements after rebase
* Fixing translations
* Fixing issues after rebase
* Routing import step to user step
* Adding myself as a codeowner
* Extend knx brightness with rgb brightness if brightness addresses are not supported
* Fix explicit return value
* Check for None
* Remove not needed check
* Disable false positive pylint warning
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix emulated_hue brightness off by one
Hue uses a max brightness of 254, Home Assistant
uses a max brightness of 255. Values > 127 were
off by one.
* use constant
* fix test
* add debug
* Revert "add debug"
This reverts commit 242220a02e.
* verify that the config in hass is not empty
* changed to use MockConfigEntry
* Update tests/components/ios/test_init.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/ios/test_init.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* changed the test per suggestions
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Rollback modbus to version 0.107.7
Update manifest to not use async.
Rollback entities to sync version.
Keep newer modifications apart from async.
Rollback __init__ to sync version but keep the new functionality.
add async sub directory
Adding the current (not working) version in a sub directory,
to allow easy sharing with a few alfa testers.
The async version are to be updated to use the serial/tcp already
available instead of the flaky pymodbus version. pymodbus is still
needed to encode/decode the messagess.
Update test cases to reflect sync implementation, but
keep the new functionality like e.g. conftest.py.
* do not publish async version
The async version will be made available in a forked repo, until
it is ready to replace the production code.
* Allow disable wired bug work around
* Move small improvements from closed PR #34065
* Fix failing test
* Add new test
* Some extra logging
* Harmonize log outputs
* Add config flow string
* Fix Balloobs comments
* Add device tracker based on arris-tg2492lg
* Return name of device and update version of arris_tg2492lg
* Update CODEOWNERS, requirements_all.txt and .coveragerc
* Change default url to host
* Use f-strings
Co-Authored-By: Franck Nijhof <frenck@frenck.nl>
* Clean up
* Fix formatting
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* add config flow to nws and remove yaml
* Don't duplicate scan_time
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Use _abort_if_unique_id_configured
Co-Authored-By: J. Nick Koston <nick@koston.org>
* fix abort
* Add unavailable tests
* update and use better strings
* lint
Co-authored-by: J. Nick Koston <nick@koston.org>
* maxcube: Make it possible to return to auto mode
It's currently not possible to switch back to auto (schedule) mode after
changing to manual or vacation. Add `PRESET_NONE` to list of presets
that will return thermostat back into auto (schedule) mode.
Additionally, use `PRESET_AWAY` instead of custom preset name for
vacation mode.
* maxcube: Provide `hvac_action` based on valve state
Not supported for wall thermostats.
* maxcube: Add support for Comfort, Eco, Off and On modes
Off is mapped to HVAC_OFF, while On - to HVAC_HEAT.
* maxcube: Add `hvac_action` support for wall thermostats
We check all thermostats in the same room as the wall thermostat. If at
least one of them has its valve open - the room is being heated.
* maxcube: Expose valve position as state attribute
Also fix a small logical error in `hvac_action`.
* maxcube: Fix linter errors and formatting
* maxcube: Adjust mapping between MAX! and HA modes and presets
MAX! 'Manual' mode now corresponds to 'Heating' mode of HA. MAX! 'Eco'
and 'Comfort' temperatures are 'Heating' mode presets. MAX! 'On' mode is
now a 'Heating' preset, too.
* maxcube: Address review comments
* Prevent a single accessory setup failure from breaking all HomeKit accessories
Raise the max devices to 150 as the spec allows for this
many. Previously 100 made sense because of the event
storms when homekit started would sometimes break pairing,
as these have largely been fixed in 0.109 (still a few
to cleanup) using the HAP spec limit of 150 is now possible.
* Handle both failure states
* Convert homekit fans to use service callbacks
* Convert homekit fans to use service callbacks
Service callbacks allow us ensure that we call
fan services in the correct order.
* Avoid calling turn_on if a speed is sent and the device is on
* Fix test to not leave files behind
* Fix test
* Update homeassistant/components/homekit/type_fans.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Set homekit alarm/sensor/switch state as soon as possible
This change is part of a multi-part effort to fix the
HomeKit event storms on startup.
Previously we would set the states after HomeKit
had started up which meant that when the controller
client connected it would request the states and get
a list of default states so all the initial states
would always be wrong. The defaults states generally went
unnoticed because we set the state of each HomeKit device
soon after which would result in an event storm in the log
that looked like the following for every client and every
device:
Sending event to client: ('192.168.x.x', 58410)
Sending event to client: ('192.168.x.x', 53399)
Sending event to client: ('192.168.x.x', 53399)
To solve this, we now set the state right away when we
create the entity in HomeKit, so it is correct on
initial sync, which avoids the event storm. Additionally,
we now check all states values before sending an update
to HomeKit to ensure we do not send events when nothing
has changed.
* pylint
* Fix event storm in covers as well
* fix refactoring error in security system
* cover positions, now with constants
* Add NUT tests for an Eaton 5E650I UPS
* add a test to make sure multiple ups get setup
* Add a few more upses
* fix missing status key
* cover
* Force CI run
* fixed what seems to be a typo
* added load_mock_device in common.py so it loads all the required things into the mocks
so they don't throw exceptions for mocks not being able to convert to int
* reverted change in homeassistant/components/dyson/sensor.py
added both values to the mock device (volatil and volatile)
* Allow async_setup changes to config entry data be taken into account
* Fix tests
* Limit scope try…finally
* Update tests/test_config_entries.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Fix import
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Run scripts
* Improvement strings
* Fix FlowOptions update listener
* Update .ceveragerc
* Add tests
* Better strings
* Add test for OptionsFlow
* Run gen_requirements_all.py once again
* Fix pylint errors
* Log error when there is no bravia.conf file during import
* Improvement strings
* Use braviarc object from hass.data in options flow
* Use async_add_executor_job for IO
* Fix options flow test
* Fix tests
* Remove host_reachable method
* Remove dependencies
* Change setup_platform method to async
* Remove calling system_info
* Save mac in the config entry
* Fix get ignore sources
* Fix read config from file
* Remove the side effect from init
* Fix user_input for user step
* Switch OrderedDict to dict
* New config_entry instance for each test
* Revert change
* Patch async_setup_entry in test_import
* Change a way to create source list
* Consolidate repeated block of code
* Update tests
* Suggested change
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Suggested channge
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Suggested change
* Patch async_setup_entry
* Remove unnecesary if
* suggested change
* Suggested change
* Fix tests
* Fix pylint error
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
In order to make this automatically discoverable via the registry
there needs to be a DEVICE_CLASS_BATTERY_CHARING in binary sensor
so we can tell what is a battery and what is a charge sensor.
* Reduce loss of precision when setting light percent brightness
This part of an effort to fix all the round trip light
brightness percentages that cause errors with homekit
, alexa, and other devices that use percentage.
* fix demo light test
* Move consts to const, general cleanup
* Add unique id
* Add default icon
* Set supported features based on sound output
* Update homeassistant/components/webostv/media_player.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Set device class
* Add software_info to client mock
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Implemented snapcast latency attributes
* Code review changes and Snapcast maintenance
Updated how entity services get called - now conforms to most
current method
* Cleanup tasks
Moved constants into separate file
Removed unnecessary logger message
Remove unnecessary schemas
* FIx linting errors
* Sort imports
* Update with requested change
Better - use next()
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Add guards for bad service calls
* Add back in platform schema
* Add check for unjoin service call
* Fix lint/format
* remove comma inserted by black
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert sense to use DataUpdateCoordinator for trends
* remove unused
* request update right away
* clarify
* call async refresh later
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Convert sense to use DataUpdateCoordinator for trends
* remove unused
* request update right away
* clarify
* call async refresh later
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/sense/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Handle all zero serial numbers in NUT
* Add additional nut tests
* Update homeassistant/components/nut/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* remove re
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Bump skybellpy to 0.4.0
* Bump skybellpy to 0.4.0 in requirements_all.txt
* Added extra states for STATE_ALARM_TRIGGERED to allow users to know if
it is a burglar or fire or carbon monoxide so automations can take
appropriate actions. Updated TotalConnect component to handle these new
states.
* Fix const import
* Fix const import
* Fix const imports
* Bump total-connect-client to 0.26.
* Catch details of alarm trigger in state attributes.
Also bumps total_connect_client to 0.27.
* Change state_attributes() to device_state_attributes()
* Move totalconnect component toward being a multi-platform integration. Bump total_connect_client to 0.28.
* add missing total-connect alarm state mappings
* Made recommended changes of MartinHjelmare at
https://github.com/home-assistant/home-assistant/pull/24427
* Update __init__.py
* Updates per MartinHjelmare comments
* flake8/pydocstyle fixes
* removed . at end of log message
* added blank line between logging and voluptuous
* more fixes
* Adding totalconnect zones as HA binary_sensors
* fix manifest.json
* flake8/pydocstyle fixes. Added codeowner.
* Update formatting per @springstan guidance.
* Fixed pylint
* Add zone ID to log message for easier troubleshooting
* Account for bypassed zones in update()
* More status handling fixes.
* Fixed flake8 error
* Another attempt at black/isort fixes.
* Bump total-connect-client to 0.50. Simplify code using new functions in
total-connect-client package instead of importing constants. Run black
and isort.
* Fix manifest file
* Another manifest fix
* one more manifest fix
* more manifest changes.
* sync up
* fix indent
* one more pylint fix
* Hopefully the last pylint fix
* make variable names understandable
* create and fill dict in one step
* Fix name and attributes
* rename to logical variable in alarm_control_panel
* Remove location_name from alarm_control_panel attributes since it is
already the name of the alarm.
* Multiple fixes to improve code per @springstan suggestions
* Update homeassistant/components/totalconnect/binary_sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Multiple changes per @MartinHjelmare review
* simplify alarm adding
* Fix binary_sensor.py is_on
* Move DOMAIN to .const in line with examples.
* Move to async_setup
* Simplify code using new features of total-connect-client 0.51
* First crack at config flow for totalconnect
* bump totalconnect to 0.52
* use client.is_logged_in() to avoid total-connect-client details.
* updated generated/config_flow.py
* use is_logged_in()
* Hopefully final touches for config flow
* Add tests for config flow
* Updated requirements for test
* Fixes to test_config_flow
* Removed leftover comments and code
* fix const.py flake8 error
* Simplify text per @Kane610 https://github.com/home-assistant/home-assistant/pull/32126#pullrequestreview-364652949
* Remove .get() to speed things up since the required items should always
be available.
* Move CONF_USERNAME and CONF_PASSWORD into .const to eliminate extra I/O
to import from homeassistant.const
* Fix I/O async issues
* Fix flake8 and black errors
* Mock the I/O in tests.
* Fix isort error
* Empty commit to re-start azure pipelines (per discord)
* bump total-connect-client to 0.53
* Update homeassistant/components/totalconnect/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/totalconnect/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Fixes per @balloob comments
* Fix imports
* fix isort error
* Fix async_unload_entry
It still referenced CONF_USERNAME instead of entry.entity_id
* Added async_setup so not breaking change. Fixed imports.
* Update tests/components/totalconnect/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Remove TotalConnectSystem() per @MartinHjelmare suggestion
* Moved from is_logged_in() to is_valid_credentials()
The second is more accurate for what we are checking for, because is_logged_in() could return False due to connection error.
* Fix import in test
* remove commented code and decorator
* Update tests/components/totalconnect/test_config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* fix test_config_flow.py
* bump total-connect-client to 0.54
* remove un-needed import of mock_coro
* bump to total-connect-client 0.54.1
* re-add CONFIG_SCHEMA
* disable pylint on line 10 to avoid pylint bug
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Convert homekit thermostats to use service callbacks
Service callbacks allow us to get all the temperature
changes in one request so we can avoid all the
need to store state and debounce.
* remove excess debug
* Fix lock and light tests
* Ensure all code for Thermostats has coverage
* I am answering all the homekit cases anyways so might as well be aware of regressions
* Make lock notifications reliable
* Update homeassistant/components/homekit/type_lights.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Handle all zero serial numbers in NUT
* Add additional nut tests
* Update homeassistant/components/nut/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* remove re
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* add test and fix tests for update logging.
* Fix update logging.
* Remove assert is True
* guard against platform config and use async_write_ha_state
* fix discovery info passing to platform
* Improve testing for entities in init
* Fix reversed door closing/opening states in HomeKit
When we closed the door we would set state 2 which
is "Opening" it should have been 3 which is
"Closing"
When we opened the door we would set state 3 which
is "Closing" it should have been 2 which is
"Opening"
Add constants to make this easier to catch
in the future.
* Remove debug
* Add note about target door state
* deCONZ support for new device trigger for Feller EDIZIOdue Friends of hue Switch
* Rename to general name -friends of hue switch
* translation for top and bottom buttons
* add pyserial to manifest
pymodbus is very developer oriented and assumes every developer
adapt the requierements.txt to his/hers needs.
Our requirements.txt is different it contains all posibilities allowing
user to later change configuration without having to install extra
packages.
As a consequence manifest.json needs to include the pyserial.
* modbus: make truly async client creation
Make hass call listen_once async.
Integrate content of start_modbus into async_setup.
Do not use the boiler plate create tcp client function from
pymodbus as it is sync, and also does not work well with asyncio,
instead call the init_<type> directly, since that is async.
* both component/modbus and component/serial uses pyserial-async
but with slighty different version requirements.
Combined the 2.
* Review 1
* Review 2
* Review
@staticmethod is no good, because the function uses class variables.
* Review
Pytest is sometimes a bit cryptic, lets hope this does it.
* Add homekit configuration option to bind to default interface
Homekit can fail to be discoverable because the
zeroconf default is to bind to all interfaces
(InterfaceChoice.All). This does not work
on some systems and (InterfaceChoice.Default) which
binds to 0.0.0.0 is needed for homekit to zeroconf
to function.
A new option is available for homekit
zeroconf_default_interface: true
* Update tests
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/homekit/__init__.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Review items
* has a default
* Revert "has a default"
This reverts commit 24ecf0920f.
Breaks the tests
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Clean up demo camera
* Complete test_motion_detection
* Clean up image reading
* Clean up camera integration async methods
* Fix and clean camera integration tests
* Fix image processing patch
* Add config_flow for roomba
* Get options to connect
* Fix options in config flow
* Fix syntax in config_flow
* Remove name (not necessary)
* Add bin sensor
* Add Battery sensor
* Add async_connect
* Fix typo
* Add Model and Software version
* Update Roombapy 1.5.0
* Add validate_input
* Add connect and disconnect functions
* Remove test config flow
* Add variables after loop
* Fix translate
* Fix typo
* Fix state of bin
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove invalid auth
* Add call function reported_state
* Add options reload
* Fix tracelog
* Set entry_id for config_entry
* Fix DOMAIN unsed-import
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add unique_id for entry
* Fix device info
* Add config_flow for roomba
* Get options to connect
* Fix options in config flow
* Fix syntax in config_flow
* Remove name (not necessary)
* Add bin sensor
* Add Battery sensor
* Add async_connect
* Fix typo
* Add Model and Software version
* Update Roombapy 1.5.0
* Add validate_input
* Add connect and disconnect functions
* Remove test config flow
* Add variables after loop
* Fix translate
* Fix typo
* Fix state of bin
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove invalid auth
* Add call function reported_state
* Add options reload
* Fix tracelog
* Set entry_id for config_entry
* Fix DOMAIN unsed-import
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/config_flow.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add unique_id for entry
* Fix device info
* syntax for mac (pyupgrade)
* Change single key to BLID
* Resolve dict conflict
* Update homeassistant/components/roomba/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/.translations/en.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/strings.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add description
* Revert "Remove test config flow"
This reverts commit 26a89422e8.
* Add tests
* Remove check if user none
* Replace CONF_USERNAME to CONF_BLID (breaking change)
* Update test_config_flow.py
* Add code owners
* Remove CONF_USERNAME (unused)
* Add multiple vacuum
* Add multiple vacuum
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix syntax name
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Remove CONF_PREFIX (unused)
* Update homeassistant/components/roomba/sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add import UNIT_PERCENTAGE
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/roomba/__init__.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add last_user_name to alarm device_state_attributes
changed_by_entity_id was removed in 0.108 and replaced
with changed_by_keypad. This didn't provide enough
data to discover the last user that changed the alarm.
* Switch to changed_by and restore since
we loose the attributes on restart
* use built-in
* Add support to the Econet integration for new attributes: lower_temp, upper_temp, ambient_temp & is_enabled
* Removing support for ambient temperature
* Rewrite parts of upnp component
* Linting
* Add SCAN_INTERVAL
* Get values simultaneously
* Move to time related constants, as per #32065
* Linting
* Move constant KIBIBYTE to homeassistant.const
* Simplify code
* Fix tests for #33344
* Changes after review
* Update homeassistant/components/upnp/sensor.py
* Changes after review
* Formatting
* Formatting
* Use ST from discovery info to avoid swapping device_types if device advertises multiple versions
* Linting
* Requirements for upnp + dlna_dmr components
* Linting
* Regen requirements
* Changes after review by @MartinHjelmare
* Changes after review by @MartinHjelmare
* Formatting
* Linting
* Changes after review by @MartinHjelmare
* Changes after review by @MartinHjelmare
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* added the ability to mock a "long poll" get request by setting up the
waiting request and feeding responses to it
with this, refactored the qwikswitch test so it doesn't use global variables
and is more understandable and maintainable
* added import asyncio from merge
* added assert that first call with long_poll has empty content
* passing json instead of the binary string
* use json instead of text in mock requests
* refactored to use a proxy
* return the proxy also for the http methods other than get
* refactored so any side_effect can be used and created the long_poll side effect
* simplified by using kwargs
needed to move the json->text->content logic from mocker to mockrequest
* no need to explicitly define method and url
* HS220 dimmers are handled as lights with a limited feature set
* Dimmers look up has has_emeter every call so this is cached as well now
to resovle the performance issue.
* update common test for modbus integration
* remove log messages from modbus setup function.
* Make global method local
* Change parameter name to snake_case
Since all entity test functions are going to use
the modbus class, isolate the common parts in
conftest.py, and thereby make it simpler to write
additional test cases.
cleaned up test_modbus_sensor.py while splitting the code.
* solve modbus issue #33872
CONF_DELAY was used in a serial connection, which is not
permitted.
Sometimes async_update is called after async_setup is completed,
but before event EVENT_HOMEASSISTANT_START is issued, leading to
a missing object.
* resolve review comment.
Do not wait for start event, but activate pymodbus directly in
async setup.
* review 2
Remark, this does not work, async_setup hangs.
clean start_modbus() from async calls, leaving only the pymodbus
setup.
* review 2a
Moved listen_once back to start_modbus, since it is sync.
* Improve Plex debounce/throttle logic
* Use Debouncer helper, rewrite affected tests
* Mock storage so files aren't left behind
* Don't bother with wrapper method, store debouncer call during init
* Test cleanup from review
* Don't patch own code in tests
* HS220 dimmers are handled as lights with a limited feature set
* Dimmers look up has has_emeter every call so this is cached as well now
to resovle the performance issue.
* Improve Plex debounce/throttle logic
* Use Debouncer helper, rewrite affected tests
* Mock storage so files aren't left behind
* Don't bother with wrapper method, store debouncer call during init
* Test cleanup from review
* Don't patch own code in tests
* solve modbus issue #33872
CONF_DELAY was used in a serial connection, which is not
permitted.
Sometimes async_update is called after async_setup is completed,
but before event EVENT_HOMEASSISTANT_START is issued, leading to
a missing object.
* resolve review comment.
Do not wait for start event, but activate pymodbus directly in
async setup.
* review 2
Remark, this does not work, async_setup hangs.
clean start_modbus() from async calls, leaving only the pymodbus
setup.
* review 2a
Moved listen_once back to start_modbus, since it is sync.
* fix bug when search for string in dict fails when dict is null
* another bug fix that I only noticed because of this other bug
* add test to cover failure scenario
* update docstring
* add additional assertions to cover failure scenario that's being fixed
Sometimes a modbus server do not respond to a transaction,
this is a contradiction to the modbus protocol specification,
but merely a matter of fact.
Use asynio.await_for() to provoke a timeout, and close the
transaction.
* Speed up TP-Link lights
* Color temp kan be None
* hs as int, force color temp=0
* Fix color temp?
* Additional tplink cleanups to reduce api calls
* Update test to return state, remove Throttle
* Fix state restore on off/on
* Fix lights without hue/sat
Co-authored-by: J. Nick Koston <nick@koston.org>
* fix bug when search for string in dict fails when dict is null
* another bug fix that I only noticed because of this other bug
* add test to cover failure scenario
* update docstring
* add additional assertions to cover failure scenario that's being fixed
* Add a config flow for flume
* Sensors no longer block Home Assistant startup
since the flume api can take > 60s to respond on
the first poll
* Update to 0.4.0 to resolve the blocking startup issue
* Missed conversion to FlumeAuth
* FlumeAuth can do i/o if the token is expired, wrap it
* workaround async_add_entities updating disabled entities
* Fix conflict
Sometimes a modbus server do not respond to a transaction,
this is a contradiction to the modbus protocol specification,
but merely a matter of fact.
Use asynio.await_for() to provoke a timeout, and close the
transaction.
Some providers have set their wait_timeout to 60s
in order to pack as many users as they can on a machine.
The mysql default is 28800 seconds (8 hours)
Since mysql connection build and tear down is relativity
expensive, we want to avoid being disconnected.
We now accommodate this scenario with the following:
1. Raise the mysql session wait_timeout 28800 when we connect
2. The event session now does a 30 second keep alive to
ensure the connection stays open
* Speed up TP-Link lights
* Color temp kan be None
* hs as int, force color temp=0
* Fix color temp?
* Additional tplink cleanups to reduce api calls
* Update test to return state, remove Throttle
* Fix state restore on off/on
* Fix lights without hue/sat
Co-authored-by: J. Nick Koston <nick@koston.org>
* Load integrations with requirements in device_automation
- Split cached loader behavior out of async_get_integration
- Use cached loader for both async_get_integration and
async_get_integration_with_requirements
- Use async_get_integration_with_requirements for device_automation
resolves#33104
* Duplicate caching logic in requirements, remove loader mods
* Update homeassistant/requirements.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Use asynctest patch instead of mock_coro
* Add test for supervisor ip ban
* Do not ban supervisor ip if set
* Extract supervisor ip helper
* Check supervisor ip before banning
* Remove added blank line
* Clean up get supervisor ip
Co-Authored-By: Pascal Vizeli <pvizeli@syshack.ch>
Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
* Convert nut to a multi step config flow
* Users can now choose the ups they want in
step 2 (or skipped if only one)
* Users can now select the resources they want
to monitor based on what is actually available
on the device
* CONF_NAME has been removed as we now get the
name from NUT
* Device classes have been added which allows
the battery charge state to be seen in the
devices UI
* Remove update_interval as its for a followup PR
* explict
* reduce
* fix bug, add tests for options flow
* Test for dupe import
* Test for dupe import
* Call step directly
* Update homeassistant/components/nut/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* convert nws to component configuration
* add more debug logging
* remove assumed state
* move initialization of data into init
* refactor update logic
* use forecast success for checking available entities
* Split unique_id into more usable pieces.
use a base_unique_id for each entry. Add domain for signaling to entities. Each entity in each platform can use base_unique_id to form individual unique_id's.
* Revert "move initialization of data into init"
This reverts commit 09eb0220469285b10f0500f5f6def67415931a81.
* add silver quality scale to manifest
* unsubscribe listener in will_remove_from_hass
* initialize _unsub_listener in __init__
* use async_on_remove
* remove scan interval from configuration
* Use better name
Co-Authored-By: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* replaced MagicMock with CoroutineMock to avoid exception
* added conversion to str so mock returns unique-id that doesn't throw json exception
* added non-empty config since hass throws exception when config is empty
* Add discovery support to synology_dsm
* Remove debug
* black
* Fix mocks
* Merge strings
* Move placeholders
* add missing placeholders
* reorder
* use constants in test
* Remove CONF_NAME (only displayed in discovery now)
* test reduction
* Shorten long name
* Use name for name but NOT for unique_id, remove CONF_NAME from yaml config
* Use Synology for the name for now, hopefully we can use the hostname later
* lint
* Remove name from strings
* remove =None
* show login errors at username field
* Update tests/components/synology_dsm/test_config_flow.py
Co-Authored-By: Quentame <polletquentin74@me.com>
* Update tests/components/synology_dsm/test_config_flow.py
Co-Authored-By: Quentame <polletquentin74@me.com>
* Update homeassistant/components/synology_dsm/const.py
Co-authored-by: Quentame <polletquentin74@me.com>
* used coroutinemock to avoid exception
* added spec to mock to remove exception
* added the current_user return value so it doesnt throw exception
* fix the mocks so properties do not need .return_value
* fixed missing mock values that were causing exceptions
* moved patch to asynctest so no need to define m_init
* fixed black error
* update common test for modbus integration
* remove log messages from modbus setup function.
* Make global method local
* Change parameter name to snake_case
* Added support for the Pi4ioe5v9xxxx binary IO expanders.
* Correction for black failure
* Correction for black failure
* Fix for manifest.json
* Fix for flake8 fault missing a period
* Some modifications I made during tests seem to be disapeared, fixed flake8 and black test now
* WIP virtual thermostat
* WIP virtual thermostat
* WIP
* 100% tests coverage
* Manifest, codeowners, typo fix
* Lint problem
* Test file blacked
* Add a test case for b4dpxl's question
* Update CODEOWNERS
* Replacement of generic thermostat
* Cleaning
* Lint
* More lint
* Using external PyPI package, removed get()
* Fix flake8 checks
* removed virtual thermostat
* Re-fix black & isort
* Re-fix isort 2
* Update homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/binary_sensor.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/pi4ioe5v9xxxx/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* black for switch
* update to latest version manual merge
* Delete test_generic_thermostat.py
* Delete .gitignore
* Delete climate.py
* Delete manifest.json
* Delete test_climate.py
* Delete test_climate.py
* fix thermostat interference
* fix thermostat interference 2
* Fix pylint
* Update .pre-commit-config.yaml
Co-authored-by: Cyril <cyril.dubus@effipilot.com>
Co-authored-by: Niflou <dubuscyr@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Skip parsing session if incomplete
* Schedule an update if session data is incomplete
* Mark as callback
* Remove update() & convert to async, abort if any session is incomplete
* Skip parsing session if incomplete
* Schedule an update if session data is incomplete
* Mark as callback
* Remove update() & convert to async, abort if any session is incomplete
* replaced MagicMock with CoroutineMock to avoid exception
* added conversion to str so mock returns unique-id that doesn't throw json exception
* added non-empty config since hass throws exception when config is empty
* MQTT Alarm Control Panel to have all available states
* MQTT Alarm Control Panel to have all available states
* test_arm_custom_bypass_* tests added
* MQTT payload_arm_custom_bypass abbreviation
Since all entity test functions are going to use
the modbus class, isolate the common parts in
conftest.py, and thereby make it simpler to write
additional test cases.
cleaned up test_modbus_sensor.py while splitting the code.
* Add config flow to Synology DSM
* Use proper sensor unique ID from flow + sensor name
* Add description to api_version
* Add authentication flow check
* Add device_info
* Add test_login_failed test
* Bump python-synology to 0.5.0
* 0.5.0 test updates
* Use NAS S/N as config_flow unique_id
* Add missed conf disks + volumes
* Review: async_unload the async_track_time_interval
* Fix NoneType for disks or volumes
* Keep all disks and volumes forever
* Update homeassistant/components/synology_dsm/.translations/en.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/synology_dsm/strings.json
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix "Keep all disks and volumes forever" for empty import
* Fix prettier
* Remove useless LOGGER in config flow
* Fix Synology DSM tests doing I/O
Co-authored-by: J. Nick Koston <nick@koston.org>
Home Assistant auto mode is described as
"The device is set to a schedule, learned behavior, AI."
HomeKit Accessory Protocol expects "heating or cooling to maintain
temperature within the heating and cooling threshold of the
target temperature"
Since HomeKit is expecting to set temperatures in this mode,
mapping homekit state 3 ("Auto") to Home Assistant HVAC_MODE_HEAT_COOL
is more inline with how Home Assistant defines HVAC_MODE_HEAT_COOL
as "The device supports heating/cooling to a range"
* Add prettier (in pre-commit and CI)
* Make all file prettier
* Change order
* Add to Azure Pipelines
* Fix a YAML file prettier caught as invalid
* Remove flow mapping using curly braces from all YAML service files
Homekit only has Off/Heat/Cool/Auto at this time, but
at least we can prevent the device from erroring
by mapping dry and fan to cool so it continues
to function.
* Add yamllint (in pre-commit and CI)
* Fix linting for all YAML files
* Bump and add it to requirements
* Fix gen_requirements for pre-commit, remove 'v' from version
* Handle race condition in harmony setup
If the remote was discovered via ssdp before the yaml config import
happened, the unique id would already be set and the import
would abort.
* Update homeassistant/components/harmony/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* reduce
* black
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Debounce calls to Plex server
* Simplify debounce by recommendation
* Update tests to handle debounce
* Test debouncer, fix & optimize tests
* Use property instead
* Removal of extraneous parenthesis
* Process review suggestions
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Small code style improvements to Insteon integration
* Update homeassistant/components/insteon/utils.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* reordered the clearing of the closed Event so it can stay set at the end and not
leave a task waiting on close
* fixed the side effect so it returns one TimeoutError and after that success
Previously it reached the end of the single item list and threw an exception
* fixed the error. it doesn't happen on python 3.7.5 but CI is on 3.7.0
* fixed comment
* Handle race condition in harmony setup
If the remote was discovered via ssdp before the yaml config import
happened, the unique id would already be set and the import
would abort.
* Update homeassistant/components/harmony/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* reduce
* black
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Debounce calls to Plex server
* Simplify debounce by recommendation
* Update tests to handle debounce
* Test debouncer, fix & optimize tests
* Use property instead
When placeholders are in use, flow_title needs to be
set in the json to prevent an empty name in the
integrations dashboard. This affected doorbirds
that were found via ssdp.
* Switch homekit lights to use service callbacks
Service callbacks allow us to get the on/off, brightness, etc
all in one call so we remove all the complexity that was
previously needed to handle the out of sync states
We now get the on event and brightness event at the same time
which allows us to prevent lights from flashing up to 100%
before the requested brightness.
* Fix STATE_OFF -> STATE_ON,brightness:0
* Add available property and raise exception
* Add entity available property
* Refactoring and fixes
* Refactoring and fix for multi sensor
* Bump abodepy version
Integration configuration cannot complete as it is currently looking for /states after authentication. Replacing with /lovelace to allow the script to complete after successful authentication with Automatic.
* Adding support for Mi AirPurifier 3
* Adding support for Mi AirPurifier 3H
* Enabled setting fan level for AirPurifier 3/3H
* Get rid of isinstance for MIOT AirPurifier
* Bumping xiaomi-miio dependency
* Fixed lint error
* Update manifest.json
* Fixed requirements files for 0.5.0.1
Co-authored-by: Piotr Król <Piotr@gorszyportal.pl>
* Adding vera config entries support.
* Fixing lint error.
* Applying minimal changes necessary to get config entries working.
* Addressing PR feedback by further reducing the scope of the change.
* Addressing PR feedback.
* Fixing pyvera import to make it easier to patch.
Addressing PR feedback regarding creation of controller and scheduling of async config flow actions.
* Updating code owners file.
* Small fixes.
* Adding a user config flow step.
* Adding optional configs for user config flow.
* Updating strings to be more clear to the user.
* Adding options flow.
Fixing some PR feedback.
* Better handling of options.
PR feedback changes.
* Using config registry to update config options.
* Better managing config from file or config from UI
Disabling config through UI if config is provided from a file.
More tests to account for these adjustments.
* Address PR feedback.
* Fixing test, merging with master.
* Disabling all Vera UI for configs managed by configuration.yml.
Adding more tests.
* Updating config based on unique_id.
Addressing additional PR feedback.
* Rebasing off dev.
Addressing feedback.
* Addressing PR feedback.
* force_update added
As per this discussion we need to update last_changed when active timer restarted.
One way to do that is to force HA update the state on each request even if it remains the same.
More details here - https://github.com/home-assistant/architecture/issues/345
* add test for force_update
make sure state_change event fired every time timer (re)started
* remove whitespaces
* remove whitespace
* Update tests/components/timer/test_init.py
Co-Authored-By: Alexei Chetroi <lexoid@gmail.com>
* fix lint
* fix isort
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
When placeholders are in use, flow_title needs to be
set in the json to prevent an empty name in the
integrations dashboard. This affected doorbirds
that were found via ssdp.
* Async fix
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Fix format
* Remove from hass
* undo dispatcher
Co-authored-by: J. Nick Koston <nick@koston.org>
* add sound mode support for devices that support it
* make setting and unsetting flag better
* move eq and audio settings into constants
* fix missed statement to use constant instead of hardcoded string
* further fixes based on review
* bump pyvizio version to include newly identified app
* Switch homekit lights to use service callbacks
Service callbacks allow us to get the on/off, brightness, etc
all in one call so we remove all the complexity that was
previously needed to handle the out of sync states
We now get the on event and brightness event at the same time
which allows us to prevent lights from flashing up to 100%
before the requested brightness.
* Fix STATE_OFF -> STATE_ON,brightness:0
If the harmony hub was not ready for connection or
was busy when importing from yaml, the import validation
would fail would not be retried.
To mitigate this scenario we now do the validation in
async_setup_platform which allows us to raise
PlatformNotReady so we can retry later.
* Handle unavailabe entities
* Remove some logging
* Set valve to lowest temp when turned off
* Remove some logging
* Address comments
* Report entity as connected if update is successful
* Fix stupidness
* Fix
* Use backend-provided fan speed presets for Xiaomi vacuums
This needs input from Xiaomi vacuum owners to verify that it does not break anything.
I have personally tested this on rockrobo v1 (old mapping).
Related issues/PRs:
home-assistant/core#32821home-assistant/core#31268home-assistant/core#27268
This is a WIP as it requires a new upstream release.
The PR is https://github.com/rytilahti/python-miio/pull/643
* Bump version requirement for 0.5.0
* Bump requirements_test_all.txt, too
* Fix linting; missing setup.cfg on local checkout caused wrong settings for black..
* Add tests for both fan speed types
* Remove useless else..
* bump python-miio to 0.5.0.1 due to broken 0.5.0 packaging
* Support for returning NULL in color or temperature. Fixes#33469
* Added further support for ‘None’ returns in level template
* Removed assumption that template render may not be a string
* Streamlined code per cloud pylint
* Updates per code review suggestions
* Added improved error handling and logging for brightness
* Additional exception handling for temperature
* lib version
* unit-test refactoring
* added type hints
* added cover
* added test to see that consts have the same value as library consts
* Update tests/components/dynalite/test_init.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed trigger template
* Update homeassistant/components/dynalite/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/dynalite/const.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* removed CONF_TRIGGER from const
corrected type hints - not clear why mypy didn't catch it
* conversion of the config to library CONFs
* moved to use the value since it should come from the library
* taking CONF_HOST from homeassistant.const instead of module const
* use dict.get
removed leftover log
* force device_class to be from homeassistant consts
* move dict.get to inline
* removed CONF from values
changed "channelcover" to "channel_cover"
* moved some CONF values out of const.py and taking them from homeassistant.const
* verifying that device class is a valid HA device class
* moved shutter to home assistant const
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Don't write storage to disk while stopping
* rework change
* lint
* remove delay save and schedule final write at stop
* update tests
* fix test component using private methods
* cleanup
* always listen
* use stop in restore state again
* whitelist JSON exceptions for later
* review comment
* make zwave tests use mock storage
If the harmony hub was not ready for connection or
was busy when importing from yaml, the import validation
would fail would not be retried.
To mitigate this scenario we now do the validation in
async_setup_platform which allows us to raise
PlatformNotReady so we can retry later.
* Handle unavailabe entities
* Remove some logging
* Set valve to lowest temp when turned off
* Remove some logging
* Address comments
* Report entity as connected if update is successful
* Fix stupidness
* Fix
* Store device_registry entry id in HueEvent
so it can be retrieved with that key when using device triggers
* Add device_trigger for hue_event from hue remotes
* supporting Hue dimmer switch & Hue Tap
* State mapping and strings are copied from deCONZ
* refactor mock_bridge for hue tests
and also share `setup_bridge_for_sensors`
for test_sensor_base and test_device_trigger.
* Add tests for device triggers with hue remotes
* Remove some triggers
* replace asyncio.wait with asyncio.gather since wait ignores exceptions
fix for test_entity_platform so it expects the exception
* changed to log on failed domains
* discovered that this fix actually removes other uncaught exceptions
* fix in the list of ignored exceptions
* replaced a few ignores on dyson tests that work locally but fail in the CI
* two more tests that are failing on the CI and not locally
* removed assertion on multiple entries with same unique_id - replaced with log and return
reverted test_entity_platform to its original since now there is no exception thrown
* entered all the dyson tests. they all pass locally and probabilistically fail in the CI
* removed unnecessary str() for exception
* added log message for duplicate entity_id / unique_id
* removed log in case of False return value
* added exc_info
* change the use of exc_info
* Convert nut to config flow
* Add a test for importing
* lint
* Address review items (part 1)
* Address review items (part 1)
* Cleanup unique id handling
* Update tests for new naming scheme
* No unique id, no device_info
* Remove sensor types
* Update tests to use resources that still exist
* Fix setting zone overlays for tados that support swing
* Support for changing swing mode will come at a later
time as another upstream update is required.
* remove debug
* style
* The api reports success before the state change
takes effect
* We now set state optimistically and followup with
an update 4 seconds in the future after any state change to
verify it actually happens.
* When hvac_mode is passed to the set_temperature service
we now switch to the desired mode.
* Add remote platform to hue integration
supporting ZGPSwitch, ZLLSwitch and ZLLRotary switches.
* Ported from custom component Hue-remotes-HASS from @robmarkcole
* Add options flow for hue, to toggle handling of sensors and remotes
* Sensors are enabled by default, and remotes are disabled,
to not generate any breaking change for existent users.
Also, when linking a new bridge these defaults are used,
so unless going explicitly to the Options menu,
the old behavior is preserved.
* SensorManager stores the enabled platforms and ignores everything else.
* Bridge is created with flags for `add_sensors` and `add_remotes`,
and uses them to forward entry setup to only the enabled platforms.
* Update listener removes disabled kinds of devices when options are changed,
so device list is in sync with options, and disabled kinds disappear from HA,
leaving the enable/disable entity option for individual devices.
* Fix hue bridge mock with new parameters
* Revert changes in hue bridge mock
* Remove OptionsFlow and platform flags
* Extract `GenericHueDevice` from `GenericHueSensor`
to use it as base class for all hue devices, including those without any entity,
like remotes without battery.
* Add `HueBattery` sensor for battery powered remotes
and generate entities for TYPE_ZLL_ROTARY and TYPE_ZLL_SWITCH remotes.
* Remove remote platform
* Add HueEvent class to fire events for button presses
* Use `sensor.lastupdated` string to control state changes
* Event data includes:
- "id", as pretty name of the remote
- "unique_id" of the remote device
- "event", with the raw code of the pressed button
('buttonevent' or 'rotaryevent' property)
- "last_updated", with the bridge timestamp for the button press
* Register ZGP_SWITCH, ZLL_SWITCH, ZLL_ROTARY remotes
* fix removal
* Exclude W0611
* Extract GenericHueDevice to its own module
and solve import tree, also fixing lint in CI
* Store registered events to do not repeat device reg
* Minor cleaning
* Add tests for hue_event and battery entities for hue remotes
* Best effort state initialization of bayesian binary sensor.
Why:
* https://github.com/home-assistant/home-assistant/issues/30119
This change addresses the need by:
* Running the main update logic eagerly for each entity being observed
on `async_added_to_hass`.
* Test of the new behavior.
* Refactor in order to reduce number of methods with side effects that
mutate instance attributes.
* Improve test coverage
Why:
* Because for some reason my commits decreased test coverage.
This change addresses the need by:
* Adding coverage for the case where a device returns `STATE_UNKNOWN`
* Adding coverage for configurations with templates
* rebase and ensure upstream tests passed
* Delete commented code from addressing merge conflict.
* Add HomeKit support for slat tilting
* Reset tilt-specific attribute, not position attribute
Co-Authored-By: J. Nick Koston <nick@koston.org>
* Add explanation why we fix HomeKit's targets
We have to assume that the device has worse precision than HomeKit. If it
reports back a state that is only _close_ to HK's requested state, we'll
"fix" what HomeKit requested so that it won't appear out of sync.
Co-authored-by: J. Nick Koston <nick@koston.org>
* Create __init__.py
* Create manifest.json
* Update zeroconf.py
* more work on integration
* more work on integration.
* add more sensor tests.
* Update const.py
* Update sensor.py
* more work on ipp.
* Update test_config_flow.py
* more work on ipp.
* Update config_flow.py
* Update config_flow.py
* Update Meteo_France Weather constants
Updating Meteo_France integration with more weather "condition" returned by the web service.
Adding:
- "Nuit claire" (note the lower 'c') mapped to "clear-night"
- "Brume" mapped to "fog"
* Black formatting update
* add services for DSP
* add homeassistant/components/kef/const.py
* add services.yaml
* fix set_mode
* fix services
* media_player.py fixes
* bump aiokef to 0.2.9
* update requirements_all.txt
* add basic sensor.py
* add DSP settings as attributes
* add message about kef.update_dsp
* remove sensor.py
* fix pylint issues
* update_dsp inside async_added_to_hass
* use {...} instead of dict(...)
* get DSP settings when connecting to HA or once on update
* simplify condition
* do not get mode twice
* remove async_added_to_hass
* use async_register_entity_service
* remove entity_id from schema and prepend _value
* invalidate self._dsp after setting a DSP setting
* schedule update_dsp every hour
* subscribe and unsubscribe on adding and removing to HA
* don't pass hass and set _update_dsp_task_remover to None after removing
* add third stage to hass shutdown
* use 3rd stage in storage
* update core state
* add writing data to multi stop ignore
* update core test
* review comment
* update name based on feedback
* Add include_location_attributes
* Add check for different state
* Fix things
* Drop filter
* significant changes only
* Change default behavior
* Remove trailing commas
* Tado climate state moved to python-tado
* Resolve various incorrect states and add tests for known tado zone states
* Write state instead of calling for an update
This is a redux of pr #32564 with all of the zone state now moved into
python-tado and tests added for the various states.
* stale string
* add missing undos to dispachers
* remove unneeded hass
* naming
* rearrange
* fix water heater, add test
* fix water heater, add test
* switch hvac mode when changing temp if in auto/off/smart
* add test to for importing multiple output settings
* provide option to set multiple output states
* tweaks after testing
* Update homeassistant/components/konnected/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Prevent nut from doing I/O in the event loop
device_state_attributes would call for an update if the
throttle happened to expire.
* _format_display_state no self use
* Modbus: remove legacy code
flexit and stiebel_el are updated to import modbus.const,
therefore legacy code can be removed.
* Flexit: update const reference from modbus
climate.py imports from modbus direct, this is legacy and will
result in errors.
update import to be modbus.const.
* Stiebel_el: update reference to modbus
__init.py references modbus directly, this is legacy and will
give errors.
Update import to be modbus.const.
* modbus: bumb pymodbus version to 2.3.0
pymodbus version 1.5.2 did not support asyncio, and in general
the async handling have been improved a lot in version 2.3.0.
updated core/requirement*txt
* updated core/CODEOWNERS
committing result of 'python3 -m script.hassfest'.
* modbus: change core connection to async
change setup() --> async_setup and update() --> async_update()
Use async_setup_platform() to complete the async connection to core.
listen for EVENT_HOMEASSISTANT_START happens in async_setup()
so it needs to be async_listen.
But listen for EVENT_HOMEASSISTANT_STOP happens in start_modbus()
which is a sync. function so it continues to be listen().
* modbus: move setup of pymodbus into modbushub
setup of pymodbus is logically connected to the class modbushub,
therefore move it into the class.
Delay construction of pymodbus client until event
EVENT_HOMEASSISTANT_START arrives.
* modbus: use pymodbus async library
convert pymodbus calls to refer to the async library.
Remark: connect() is no longer needed, it is done when constructing
the client. There are also automatic reconnect.
* modbus: use async update for read/write
Use async functions for read/write from pymodbus.
change thread.Lock() to asyncio.Lock()
* Modbus: patch for slow tcp equipment
When connecting, via Modbus-TCP, so some equipment (like the
huawei sun2000 inverter), they need time to prepare the protocol.
Solution is to add a asyncio.sleep(x) after the connect() and before
sending the first message.
Add optional parameter "delay" to Modbus configuration.
Default is 0, which means do not execute asyncio.sleep().
* Modbus: silence pylint false positive
pylint does not accept that a class construction __new__
can return a tuple.
* Modbus: move constants to const.py
Create const.py with constants only used in
the modbus integration.
Duplicate entries are removed, but NOT any entry that would
lead to a configuration change.
Some entries were the same but with different names, in this
case renaming is done.
Also correct the tests.
* Modbus: move connection error handling to ModbusHub
Connection error handling depends on the hub, not the
entity, therefore it is logical to have the handling in
ModbusHub.
All pymodbus call are added to 2 generic functions (read/write)
in order not to duplicate the error handling code.
Added property "available" to signal if the hub is connected.
* Modbus: CI cleanup
Solve CI problems.
* Modbus: remove close of client
close() no longer exist in the pymodbus library, use
del client instead.
* Modbus: correct review comments
Adjust code based on review comments.
* Modbus: remove twister dependency
Pymodbus in asyncio mode do not use twister but still throws a
warning if twister is not installed, this warning goes into
homeassistant.log and can thus cause confusion among users.
However installing twister just to avoid the warning is not
the best solution, therefore removing dependency on twister.
* Modbus: review, remove comments.
remove commented out code.
* Plum Lightpad - glowIntensity is represented as a float/percentage
Calculate brightness from the glowIntensity instead of the glowIntensity from brightness.
* Renamed `_glowIntensity` to `_glow_intensity`
* Added Rounding, converting to an int, min and max boxing
* Added codeowners to the Plum Lightpad manifest.json
This upgrades to PyVicare 0.1.10 which allows to combine multiple
requests into a single HTTP GET. This in turn allows us to increase
the scan_interval to 60 seconds by default.
Additionally scan_interval has been introduced as a config parameter.
When in run schedule mode, setting the temperature will switch
the device to a temporary hold. If you set the temperature
again, we should stay in temporary hold mode and not switch
to permanent hold.
The underlying nuheat package contains a default to a
permanent hold if no setting was passed. We now always
pass the setting.
* Implement Alexa.CameraStreamController.
* Add dependencies.
* Add camera helpers for image url, and mjpeg url.
* Remove unsupported AlexaPowerController from cameras.
* Refactor camera_stream_url to hass_url
* Declare HLS instead of RTSP.
* Add test for async_get_image_url() and async_get_mpeg_stream_url().
* Sort imports.
* Fix camera.options to camera.stream_options. (#32767)
(cherry picked from commit 9af95e8577)
* Remove URL configuration option for AlexaCameraStreamController.
* Update test_initialize_camera_stream.
* Optimize camera stream configuration.
* Update Tests for optimized camera stream configuration.
* Sort imports.
* Add check for Stream integration.
* Checks and Balances.
* Remove unnecessary camera helpers.
* Return None instead of empty list for camera_stream_configurations().
In PR#24804 the step size was changed to match the step size
of the device that HomeKit is controlling. Since HomeKit
is always working in TEMP_CELSIUS and the step size is based on
the Home Assistant units setting, we were mixing data with different
units of measure when Home Assistant was using imperial units.
This regression presented the symptom that setting the
temperature to 73F would result in 74F. Other values are affected
where the math doesn't happen to work out.
HomeKit currently has a default of 0.1 in the spec and the override
of this value has been removed.
* Config flow for elkm1
* As entity ids can now be changed, the “alarm_control_panel”
attribute “changed_by_entity_id” is now “changed_by_keypad”
and will show the name of the Elk keypad instead of the entity id.
* An auto configure mode has been introduced which avoids the
need to setup the complex include and exclude filters. This
functionality still exists when configuring from yaml for power
users who want more control over which entities elkm1 generates.
* restore _has_all_unique_prefixes
* preserve legacy behavior of creating alarm_control_panels that have no linked keypads when auto_configure is False
* unroll loop
* Add integration for Schluter
New integration for Schluter DITRA-HEAT thermostats. Interacts with Schluter API via py-schluter to implement climate platform.
* Fix for manifest issue on build
Removed unnecessary configurator logic
* Flake8 & ISort issues fixed
* Code review modifications for Schluter integration
- Removed unnecessary strings.json file
- Removed unnecessary DEFAULT_SCAN_INTERVAL from __init__.py
- Removed persistent notification for authentication error in __init__.py
- Removed string casts from log statements in __init__.py
- Removed unnecessary logging of entity creations in climate.py
- Removed unnecessary lookup for hvac_mode in climate.py
* Work started on Update Coordinator
* Further Coordinator work
* Update to DataUpdateCoordinator complete
* Flake8 fix
* Removal of unnecessary SchluterPlatformData
Coordinator also now using SCAN_INTERVAL
* Disable polling, use coordinator listeners
* Isort on climate.py
* Code review modifications
- Hass data stored under domain
- Since platform only likely to be climate, removed array, load explicitly
- Remove unnecessary fan mode implementation
* Switch to HVAC action for showing current heating status
* Isort fix
* HVAC Mode return list, set_hvac_mode function added
* __init__.py modifications from code review
* Climate.py code review modifications
- Device info property removed
- Write state function on set temp failure
- Add "available" property
- Delegate sync function in coordinator update to the executor
* Serial number as unique identifier
- Now using serial number & thermostat dictionary to protect against scenarios where a device is removed and enumerable index is no longer accurate
- Removed async_write_ha_state() from set temp exception, not needed
- Removed unnecessary SCAN_INTERVAL definition
* Linting
* Update homeassistant/components/schluter/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/schluter/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Changed timeout from config, load platform discover to None
* Proposed change for discover info issue
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* start of fan groups
* update fan classes
* update group entity domains
* add set speed
* update discovery for multiple entities for groups
* add fan group entity tests
* cleanup const
* cleanup entity_domain usage
* remove bad super call
* remove bad update line
* fix set speed on fan group
* change comparison
* pythonic list
* discovery guards
* Update homeassistant/components/zha/core/discovery.py
Co-Authored-By: Alexei Chetroi <lexoid@gmail.com>
Co-authored-by: Alexei Chetroi <lexoid@gmail.com>
* Abort rachio homekit config when one is already setup.
We can see rachio on the network to tell them to configure
it, but since the device will not give up the account it is
bound to and there can be multiple rachio controllers on a single
account, we avoid showing the device as discovered once
they already have one configured as they can always
add a new one via "+"
* doc string freshness
* doc string freshness
* Update tests/components/rachio/test_config_flow.py
Co-Authored-By: Franck Nijhof <git@frenck.dev>
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Update PySwitchbot to 0.8.0 and added password configuration
* Removed unchanged retry_count attribute
* Fix dependencies and formatting
* Removed default value for password and use config.get instead
If the database server disconnects there were exceptions
that were not trapped which would cause the recorder event
loop to collapse. As we never want the loop to end
we trap exceptions broadly.
Fix a bug in the new commit interval setting which caused
it to always commit after 1s
If the database server disconnects there were exceptions
that were not trapped which would cause the recorder event
loop to collapse. As we never want the loop to end
we trap exceptions broadly.
Fix a bug in the new commit interval setting which caused
it to always commit after 1s
* bump pyvizio and update app_id to show app config to aid in HA config generation. squashed from multiple commits to make a rebase on dev easier
* bump pyvizio for bug fixes
* fix pyvizio version number
* only return app_id if app is unknown and explicitly create the dict that's returned
* fix tests
* fix docstring for app_id
* split entity into base and entity
* add initial light group support
* add dispatching of groups to light
* added zha group object
* add group event listener
* add and remove group members
* get group by name
* fix rebase
* fix rebase
* use group_id for unique_id
* get entities from registry
* use group name
* update entity domain
* update zha storage to handle groups
* dispatch group entities
* update light group
* fix group remove and dispatch light group entities
* allow picking the domain for group entities
* beginning - auto determine entity domain
* move methods to helpers so they can be shared
* fix rebase
* remove double init groups... again
* cleanup startup
* use asyncio create task
* group entity discovery
* add logging and fix group name
* add logging and update group after probe if needed
* test add group via gateway
* add method to get group entity ids
* update storage
* test get group by name
* update storage on remove
* test group with single member
* add light group tests
* test some light group logic
* type hints
* fix tests and cleanup
* revert init changes except for create task
* remove group entity domain changing for now
* add missing import
* tricky code saving
* review comments
* clean up class defs
* cleanup
* fix rebase because I cant read
* make pylint happy
* Run-in-env script.gen_requirements_all and hassfest in pre-commit
* Apply suggestions from code review and change `language` to script
Co-authored-by: Ville Skyttä <ville.skytta@iki.fi>
We can see myq on the network to tell them to configure
it, but since the device will not give up the account it is
bound to and there can be multiple myq gateways on a single
account, we avoid showing the device as discovered once
they already have one configured as they can always
add a new one via "+"
* Fix minor issues mentioned in #30837 after it was closed
* Update homeassistant/components/bmp280/sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* some sensors working in homeassistant
* bring up to date
* add codeowner
* update requirements
* overhaul data imports from api & sensor discovery
* remove print statement
* delete requirements_test_all
* add requrements_test_all.txt
* Update homeassistant/components/nextcloud/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* Update homeassistant/components/nextcloud/sensor.py
Co-Authored-By: springstan <46536646+springstan@users.noreply.github.com>
* describe recursive function
* clarify that dict is returned
* remove requirements from requirements_test_all
* improve and simplify sensor naming
* add basic tests
* restore pre-commit config
* update requirements_test_all
* remove codespell requirement
* update pre-commit-config
* add-back codespell
* rename class variables as suggested by @springstan
* add dev branch to no-commit-to-branch git hook
Because my fork had the same 'dev' branch i wasn't able to push. Going forward I should probably name my branches differently.
* move config logic to __init__.py
* restore .pre-commit-config.yaml
* remove tests
* remove nextcloud test requirement
* remove debugging code
* implement binary sensors
* restore .pre-commit-config.yaml
* bump dependency version
* bump requirements files
* bump nextcloud reqirement to latest
* update possible exceptions, use fstrings
* add list of sensors & fix inconsistency in get_data_points
* use domain for config
* fix guard clause
* repair pre-commit-config
* Remove period from logging
* include url in unique_id
* update requirements_all.txt
Co-authored-by: springstan <46536646+springstan@users.noreply.github.com>
* Added support for Minecraft SRV records
* Switched from dnspython to aiodns, improved server ping and log messages, use address instead of host and port in config flow
* Updated component requirements
* Fix state_automation_listener when new state is None (fix#32984)
* Listen to EVENT_STATE_CHANGED instead of using async_track_state_change
and use the event context on automation trigger.
* Share `process_state_match` with helpers/event
* Add test for state change automation on entity removal
* Use async_call_later for retrying, instead of async_track_point_in_time
* Normalize test filename renaming it to `test_sensor`
* Remove link to docs in docstring
* Adjust test results to new behavior with async_call_later
* Update firmware version in device registry.
Parse recevied OTA requests for firmware version and update device
registry.
* Update tests.
* Cleanup sw_id_update listener.
* Update ZHA test devices list.
* Add aircleaner and humidify service to nexia climate
* These were removed from the original merge to reduce review scope
* Additional tests for binary_sensor, sensor, and climate states
* Switch to signals for services
Get rid of everywhere we call device and change to zone or thermostat
as it was too confusing
Renames to make it clear that zone and thermostat are tightly coupled
* Make scene activation responsive
* no need to use update for only one key/value
* stray comma
* use async_call_later
* its async, need ()s
* cleaner
* merge entity platform services testing branch
* Updated tado integration climate.py to allow for presence change
* Updated tado integration __init__.py to allow for presence change
* Black formatting
* Added missing docstring
* Added missing period to docstring
* Using constants from climate component
* Filter out other preset_modes
* Linting error fix
* Isort error fix
* Filtering of unwanted presence mode in init
* Bumped python-tado version to 0.5.0
Removed unnecessary preset mode check
* Update requirements_all.txt
* Config flow for doorbird
* Discoverable via zeroconf
* Fix zeroconf test
* add missing return
* Add a test for legacy over ride url (will go away when refactored to cloud hooks)
* Update homeassistant/components/doorbird/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* without getting the hooks its not so useful
* Update homeassistant/components/doorbird/config_flow.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix copy pasta
* remove identifiers since its in connections
* self review fixes
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add support for Lutron Caseta occupancy/vacancy sensors
This follows updates to pylutron-caseta to add support for these
devices. This code works for me as a custom component in Home Assistant
Core with pylutron-caseta 0.6.0 (currently unreleased).
* black formatting
* Update requirements_all.txt
* Apply black formatting
* Resolve some review comments
* serial -> unique_id
* Black formatting
* Resolve linting errors
* Add code owner...
* Fix isort complaint
* Fix remaining isort complaints
* Update codeowners
* Resolve outstanding review comments
* Remove caseta_
* Modernize nuheat for new climate platform
* Home Assistant state now mirrors the
state displayed at mynewheat.com
* Remove off mode as the device does not implement
and setting was not implemented anyways
* Implement missing set_hvac_mode for nuheat
* Now shows as unavailable when offline
* Add a unique id (serial number)
* Fix hvac_mode as it was really implementing hvac_action
* Presets now map to the open api spec
published at https://api.mynuheat.com/swagger/
* ThermostatModel: scheduleMode
* Revert test cleanup as it leaves files behind.
Its going to be more invasive to modernize the tests so
it will have to come in a new pr
* Config flow for nuheat
* codeowners
* Add an import test as well
* remove debug
If the IP address of the harmony hub changed it would
not be rediscovered. We now connect to get the
unique id and then update config entries with
the correct ip if it is already setup.
* Add gate support to myq, fix bouncy updates
Switch to DataUpdateCoordinator, previously
we would hit the myq api every 60 seconds per device.
If you have access to 20 garage doors on the account it means
we would have previously tried to update 20 times per minutes.
* switch to async_call_later
* Add new integration: pvpc_hourly_pricing
to add a sensor with the current hourly price of electricity in Spain.
Configuration is done by selecting one of the 3 reference tariffs, with
1, 2, or 3 billing periods.
* Features config flow, entity registry, RestoreEntity, options flow
to change tariff, manual yaml config as integration or sensor platform
* Cloud polling sensor with minimal API calls (3/hour at random times)
and smart retry; fully async
* Only 1 state change / hour (only when the price changes)
* At evening, try to download published tomorrow prices, to always store
prices info for a window of [3, 27] hours in the future.
* Include useful state attributes to program automations to be run
at best electric prices.
* Add spanish and english translations.
* Requires `xmltodict` to parse official xml file with hourly prices
for each day.
* Update requirements and add to codeowners
* Avoid passing in hass as a parameter to the entity
Instead, create time change listeners in async_added_to_hass and
call async_generate_entity_id before async_add_entities
* Fix lint issues
* Add tests for config & options flow
* Add tests for manual yaml config
with entity definition as integration and also as a sensor platform
* Fix placement of PLATFORM_SCHEMA and update generated config_flows
* Store prices internally linked to UTC timestamps
- to deal with days with DST changes
- and work with different local timezones
* Add availability to sensor
to 'expire' the sensor if there is no connection available
and current hour is not in the stored prices.
Also, turn off logging and retrying if prices can't be downloaded
repeatedly, by flagging `data_source_available` as False, so there is no
log-flood mess.
* Add more tests
- to cover behavior in DST changes and complete coverage of sensor logic
- to cover abort config flow
* fix linter
* Better handling of sensor availability and minor enhancements
- Emmit 1 error if data source is marked as unavailable
(after some retries), and be silent until cloud access is recovered,
then emmit 1 warning.
- Follow standard of camel_case keys in attributes
* Mock aiosession to not access real API, store fixture data
- Store a set of daily xml files to test sensor logic for all situations
- Mock time and session to run tests with stored API responses
- Add availability test to simulate a lost + recovery of cloud access,
checking that logging is reasonable: 1 error to flag the continued
disconnection + 1 warning in recovery.
* Change API endpoint to retrieve JSON data
and remove xmltodict from reqs.
It seems that this endpoint is more reliable than the XML.
* Adapt tests to new API endpoint
* Translate tariff labels to plain English
and sync the default timeout value for all ways of configuration.
* Relax logging levels to meet silver requirements
- 1 warning when becoming unavailable, another warning when recovered.
- Warnings for unexpected TimeoutError or ClientError
- Move the rest to debug level, leaving info for HA internals
Also reduce number of API calls from 3 to 2 calls/hour.
* Fix requirements
* Mod tests to work with timezone Atlantic/Canary
and fix state attributes for timezones != reference, by using 3 price
prefixes: 'price_last_day_XXh', 'price_next_day_XXh' and 'price_XXh',
all generated with local time (backend timezone)
* Try to fix CI tests
* Externalize pvpc data and simplify sensor.py
* add new `aiopvpc` to requirements
* Remove data parsing and price logic from here
* Replace some constant properties with class variables
* Simplify tests for pvpc_hourly_pricing
* Fix updater for options flow
* Updater always reloads
* `tariff` value comes 1st from entry.options, 2nd from entry.data
* Fix lint
* Bump aiopvpc
* Remove options flow and platform setup
- Remove PLATFORM_SCHEMA and async_setup_platform
- Generate config_entry.unique_id with tariff instead of entity_id, in flow step.
- Remove TariffSelectorConfigFlow
- Adapt tests to maintain full coverage
* Fix docstring on test
and rename SENSOR_SCHEMA to SINGLE_SENSOR_SCHEMA to avoid confusion
* Remove timeout manual config, fix entry.options usage, simplify unique_id
* Simplify tests
- No need for a test_setup now, as platform setup is removed and integration
setup is already used in `test_availability`
- Simplified `_process_time_step`: only one async_fire(EVENT_TIME_CHANGED)/hour
* Fix possible duplicated update
when source is not available.
* Do not access State last_changed for log messages
* Do not update until entity is added to hass
and call to async_update after 1st download or when recovering access, so
async_write_ha_state is not called twice on those.
* minor changes
* Rename method to select current price and make it a callback
* General code cleanups for lutron_caseta component
* black
* Update homeassistant/components/lutron_caseta/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* filter out additional app config names from pyvizios app list
* add test
* change where filtering app list occurs
* fix test
* fix mistake in change
* hopefully final test fix
* fix test scenario that unknowingly broke with test change
* Clear state on exception
Clear state if querying the device fails. The state is then set to unknown, so it can be tracked if a miflora device isn't responding any more.
* Add available()
Signal valid data via available()
* miflora: add timeout to go unavailable
* code cleanup
* miflora: tox cleanup
* Fix scheduled update time-drift in data update coordinator
As next schedule is calculated **after** the update is done,
setting now + update_interval makes 1 second drift in practice,
as the tick is 1Hz.
* Floor the utcnow timestamp
to remove sub-second error precision, and generate constant frequency updates
as long as the update takes < 1s.
* Fix tankerkoenig with more than 10 stations
There seemed to be a problem, if more than 10 fuel stations were tracked.
Added a warning in this case, and split the calls to the API in chunks of
10, so that the data can be fetched anyway.
* Update homeassistant/components/tankerkoenig/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Split ZHA device loading and entities adding.
Load zha devices from ZHA gateway, but add entities after integration
was setup.
* Use hass.loop.create_task()
* Split ZHA device initialization from loading.
Restore and initialize ZHA devices separately.
* Use hass.async_create_task()
Load devices prior group initialization.
* Validate UUIDs against custom validator
Instead of just validating against strings, use a custom validator,
so that the format can be checked.
* Add tests for custom UUID4 validator
* Add support for nexia automations
Bump nexia to 0.7.1
Start adding tests
Fix some of the climate attributes that were wrong (discovered while adding tests)
Pass the name of the instance so the nexia UI does not display "My Mobile"
* fix mocking
* faster asserts, scene
* scene makes so much more sense
* pylint
* Update homeassistant/components/nexia/scene.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* docstring cleanup
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add a config flow for myq
* Discovered by homekit
* Fix gates being treated as garage doors
* Offline devices now show as unavailable
* Homekit flow
* strip out icon
* return -> raise
* Modernize nuheat for new climate platform
* Home Assistant state now mirrors the
state displayed at mynewheat.com
* Remove off mode as the device does not implement
and setting was not implemented anyways
* Implement missing set_hvac_mode for nuheat
* Now shows as unavailable when offline
* Add a unique id (serial number)
* Fix hvac_mode as it was really implementing hvac_action
* Presets now map to the open api spec
published at https://api.mynuheat.com/swagger/
* ThermostatModel: scheduleMode
* Empty commit to re-run ci
* Revert test cleanup as it leaves files behind.
Its going to be more invasive to modernize the tests so
it will have to come in a new pr
Add new "amcrest.ptz_control" service to specify a PTZ camera movement or zoom direction (up, down, right, left, right_up, right_down, left_up, left_down, zoom_in, zoom_out). An optional travel_time attribute specifies the amount of movement between start/stop.
* Wait for cloud connection
* Just wait
* Remove redundant entry
* Drop webhook before unloading other platforms
* Add missing scope
* Update homeassistant/components/netatmo/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Fix test
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Add tests for states of the sensors
* Revert async_update method
* Tests improvement
* Fix icon name
* Tests improvement
* Simplify tests
* Test improvement
* Patch the library instead of the coordinator
* Suggested change
* Remove return_value
* Convert amcrest binary sensors from poll to stream
- Bump amcrest package to 1.6.0.
- For online binary sensor poll camera periodically to test communications in case
configuration & usage results in no other communication to camera.
- Start a separate thread to call camera's event_stream method since it never returns.
- Convert all received events into signals that cause corresponding sensors to update.
- Use camera's generic event_channels_happened method to update sensors at startup,
and whenever camera comes back online after being unavailable.
* Changes per review
* Changes per review 2
* Changes per review 3
- Move event stream decoding to amcrest package.
- Change name of event processing threads so global
counter is no longer required.
- Bump amcrest package to 1.7.0.
* Update powerwall unique id
* Fix somfy optimistic mode when missing in conf (#32995)
* Fix optimistic mode when missing in conf #32971
* Ease code using a default value
* Client id and secret are now inclusive
* Bump aiohomekit to fix Insignia NS-CH1XGO8 and Lennox S30 (#33014)
* Axis - Fix char in stream url (#33004)
* An unwanted character had found its way into a stream string, reverting f-string work to remove duplication of code and improve readability
* Fix failing tests
* deCONZ - Add support for Senic and Gira Friends of Hue remote… (#33022)
* Update the test
* Harmony config flow improvements (#33018)
* Harmony config flow improvements
* Address followup review comments from #32919
* pylint -- catching my naming error
* remove leftovers from refactor
* Update powerwall unique id
* Update the test
Co-authored-by: tetienne <thibaut@etienne.pw>
Co-authored-by: Jc2k <john.carr@unrouted.co.uk>
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* Merge nexia
* Restore original work
* Merge cleanups
* config flow
* Add config flow
* Add missing files
* Fix import of old yaml config
* More cleanups from self review
* Additional self review
* Update homeassistant/components/nexia/services.yaml
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* fix io in event loop
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* avoid using ternary statements if they span multiple
* Cleanup strings and remove unneeded attributes
* more cleanup
* more cleanup of yaml
* remove coordinator boiler plate
* nuke services for now for the inital pr, add back later
* remove copy pasta
* this can be reduced more
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* review
* comments
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/nexia/climate.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* more review adjustments
* nuke unused constants
* Update homeassistant/components/nexia/config_flow.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* map states
* add update
* zone id is unique
* Fix humidfy check
* target_humidity should be a property instead of in attributes
* remove aux heat as its already there
Co-authored-by: Ryan Nazaretian <ryannazaretian@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* An unwanted character had found its way into a stream string, reverting f-string work to remove duplication of code and improve readability
* Fix failing tests
* Config flow for harmony
* Fixes unique ids when using XMPP
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* Find the unique id for the config flow
* move shutdown to init
* Add test for ssdp (still failing)
* Fix ssdp test
* Add harmony to MIGRATED_SERVICE_HANDLERS (this is a breaking change)
* more cleanups
* use unique id for the config file
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
The existing sensor icons, while descriptive - dead = dead - are perhaps too matter of fact and don't accurately convey the tragedy. I changed emoticon-dead-outline to emoticon-cry-outline, as I think it better conveys the reality of the situation along with the emotions tied to the statistic.
* Fix iCloud init while pending
Continue if device is pending while setup
Create devices and fetch 15s if pending, otherwise determine interval to fetch.
* Add retried_fetch guard
* here_travel_time: Add modes arrival and departure
* convert arrival/departure from datetime to time
* Default departure is set by external lib on None
* Use cv.key_value_schemas
* Initial commit
* Restricting conditions by supported_features, drop pending condition
* Added tests for no and minimum amount of conditions
* Address review comments
* Sort impors with isort
* Sort impors with isort v2
* Add 'Yeelight LED Ceiling Light' model
Add new model https://www.yeelight.com/en_US/product/luna
* Update requirements_all.txt bump to yeelight 0.5.1
Update requirements_all.txt bump to yeelight 0.5.1
* Update manifest.json, bump to 0.5.1
Update manifest.json, bump to 0.5.1
* set alarmdecoder code_arm_required to False
* rm unnecessary f strings
* add code_arm_required config option
* add self as codeowner :-)
* add self as codeowner the right way
* Updating SynologySRM device trakcers to show additional information
* Fixes
* Aliasing attributes to snake case
* Sugguested changes as per MartinHjelmare
* add feet to meter conversion
* convert pressure and wind. fix wind for metric.
* dont convert wind speed in metric.
pymetno already converts it.
* add units to setup_platform constuctor
* Add tests for several devices
* Update coveragerc
* Code review changes and minor clean up
* More code review changes
* Update manifest and minor test updates
* Add test for locks and covers
* Add tests for switch on and off
* Add more complete test for alarms
* Fix for camera test
* Patch abodepy.mode for tests
* Add test for unknown alarm state and minor cleanup
* Update to make tests more robust
* More specific tests
* Update quality scale to silver
* Remove integration quality scale
* Add model to rachio device info
Address followup items
* Address review items, retest zone updates back and forth, and standby mode
* Remove super
* Revert "Remove super"
This reverts commit 02e2f156a9.
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/rachio/binary_sensor.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Require a hyphen in lovelace dashboard url
* Keep storage dashboards working
* register during startup again
* Update homeassistant/components/lovelace/dashboard.py
Co-Authored-By: Paulus Schoutsen <balloob@gmail.com>
* Comments
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Catch asyncio.TimeoutError, show a proper message instead
* Throttle updates to max once per 30s
* Change code owner
* Fix CODEOWNERS + linting
* Warn on connection timeout
* Do not fail when a user has a controller with shared access on their account
* Add config flow for rachio
Also discoverable via homekit
* Update homeassistant/components/rachio/switch.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Split setting the default run time to an options flow
Ensue the run time coming from yaml gets imported into the option flow
Only get the schedule once at setup instead of each zone (was hitting rate limits)
Add the config entry id to the end of the webhook so there is a unique hook per config entry
Breakout the slew of exceptions rachiopy can throw into RachioAPIExceptions
Remove the base url override as an option for the config flow
Switch identifer for device_info to serial number
Add connections to device_info (mac address)
* rename to make pylint happy
* Fix import of custom_url
* claim rachio
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* emulated_hue: Optimize is_entity_exposed
Switch all list transversals in is_entity_exposed to
hash lookups
get_deprecated is now only called if explict_expose is
set
This funciton was iterating multiple lists per enitity
every time there was an update. It was responsible for
a chunk of execution time when there are large number
of entities in home assistant.
* Complete deprecation of ATTR_EMULATED_HUE attribute
* Complete deprecation of ATTR_EMULATED_HUE attribute (remove const)
* Remove ATTR_EMULATED_HUE_HIDDEN and Rewrite tests
* Extend rtorrent sensor functionality.
* Remove blank line from end of file.
* After using black formatter.
* Update sensor.py using snake_case for variable names.
* Update PR by using true value in condition.
* move apps configuration to options flow
* add additional assertion to new test
* add additional assertions for options update
* update docstrings, config validation, and tests based on review
* Add set_memo_text service
* Apply template rendering for memo text
* Update constants to comply to naming conventions
* Local variable for module address and extended error description
* fixed typo
* Use platform tag to register components on hue SensorManager
instead of a boolean flag to decide between sensor and binary sensor,
so it could be used externally (or to get ready for inclusion of other comps)
* Make new item discovery platform agnostic for SensorManager
* Fix delijn sensor stuck on last passage
If the returned passage is an empty list that means there are
no next passages, so the sensor should be updated accordingly
* Mark the sensor as unavailable instead of emptying data
* use available property
* add available property
instances whenever the volume was requested a division calculation was made
resulting in a TypeError. The volume adjustment from `0-100` to `0-1` is now
calculated during the `update()` method.
* Add limit parameter to service call methods
* Break out prep part of async_call_from_config for use elsewhere
* Minor cleanup
* Fix improper use of asyncio.wait
* Fix state update
Call change listener immediately if its a callback
* Fix exception handling and logging
* Merge Script helper if_running/run_mode parameters into script_mode
- Remove background/blocking _ScriptRun subclasses which are no longer needed.
* Add queued script mode
* Disable timeout when making fully blocking script call
* Don't call change listener when restarting script
This makes restart mode behavior consistent with parallel & queue modes.
* Changes per review
- Call all script services (except script.turn_off) with no time limit.
- Fix handling of lock in _QueuedScriptRun and add comments to make it
clearer how this code works.
* Changes per review 2
- Move cancel shielding "up" from _ScriptRun.async_run to Script.async_run
(and apply to new style scripts only.) This makes sure Script class also
properly handles cancellation which it wasn't doing before.
- In _ScriptRun._async_call_service_step, instead of using script.turn_off
service, just cancel service call and let it handle the cancellation
accordingly.
* Fix bugs
- Add missing call to change listener in Script.async_run
in cancelled path.
- Cancel service task if ServiceRegistry.async_call cancelled.
* Revert last changes to ServiceRegistry.async_call
* Minor Script helper fixes & test improvements
- Don't log asyncio.CancelledError exceptions.
- Make change_listener a public attribute.
- Test overhaul
- Parametrize tests.
- Use common test functions.
- Mock timeout so tests don't need to wait for real time to elapse.
- Add common function for waiting for script action step.
* Add config flow to Freebox
* Add manufacturer in device_tracker info
* Add device_info to sensor + switch
* Add device_info: connections
* Add config_flow test + update .coveragerc
* Typing
* Add device_type icon
* Remove one error log
* Fix pylint
* Add myself as CODEOWNER
* Handle sync in one place
* Separate the Freebox[Router/Device/Sensor] from __init__.py
* Add link step to config flow
* Make temperature sensors auto-discovered
* Use device activity instead of reachablility for device_tracker
* Store token file in .storage
Depending on host if list of Freebox integration on the future without breaking change
* Remove IP sensors + add Freebox router as a device with attrs : IPs, conection type, uptime, version & serial
* Add sensor should_poll=False
* Test typing
* Handle devices with no name
* None is the default for data
* Fix comment
* Use config_entry.unique_id
* Add async_unload_entry with asyncio
* Add and use bunch of data size and rate related constants (#31781)
* Review
* Remove useless "already_configured" error string
* Review : merge 2 device & 2 sensor classes
* Entities from platforms
* Fix unload + add device after setup + clean loggers
* async_add_entities True
* Review
* Use pathlib + refactor get_api
* device_tracker set + tests with CoroutineMock()
* Removing active & reachable from tracker attrs
* Review
* Fix pipeline
* typing
* typing
* typing
* Raise ConfigEntryNotReady when HttpRequestError at setup
* Review
* Multiple Freebox s
* Review: store sensors in router
* Freebox: a sensor story
2020-03-11 22:15:59 +01:00
13060 changed files with 266296 additions and 114840 deletions
"single_instance_allowed":"Bare en enkelt konfigurasjon av Abode er tillatt."
},
"error":{
"connection_error":"Kan ikke koble til Abode.",
"identifier_exists":"Kontoen er allerede registrert.",
"invalid_credentials":"Ugyldig legitimasjon"
},
"step":{
"user":{
"data":{
"password":"Passord",
"username":"E-postadresse"
},
"title":"Fyll ut innloggingsinformasjonen for Abode"
}
}
}
}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.