Commit graph

14176 commits

Author SHA1 Message Date
Erik Montnemery
9bd676aff6
Improve automation reload (#81854)
* Improve automation reload

* Small tweak

* Improve
2022-11-10 14:44:55 +01:00
Matthias Alphart
ee9231363f
Refactor KNX Config and Options flows (#80641) 2022-11-10 14:25:41 +01:00
Erik Montnemery
874ece195e
Include config entry id in response to WS API hardware/info (#81906) 2022-11-10 13:19:21 +01:00
Martin Hjelmare
9ded232522
Move zwave_js addon manager to hassio integration (#81354) 2022-11-10 10:09:52 +01:00
Allen Porter
f34de5072a
Bump gcal_sync to 4.0.1 to fix Google Calendar config flow (#81873)
Bump gcal_sync to 4.0.1

This reverts test chagnes from PR #81562 that were actually incorrect given
the calendar "get" API returns less information that the "CalendarList" api.
2022-11-09 19:34:31 -08:00
Erik Montnemery
7aa4654eb4
Improve docstring for sensor testcase (#81875) 2022-11-09 23:59:58 +01:00
Aaron Bach
adf84b0c62
Add async_get_active_reauth_flows helper for config entries (#81881)
* Add `async_get_active_reauth_flows` helper for config entries

* Code review

* Code review + tests
2022-11-09 15:36:50 -07:00
Allen Porter
0941ed076c
Cleanup unnecessary google calendar test fixtures (#81876) 2022-11-09 20:59:00 +01:00
J. Nick Koston
f9ff23a2c8
Fix benign typo in test_config_entries.py (#81789)
* Fix typo in test_config_entries.py

* touch ups

* Update tests/test_config_entries.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-11-09 16:36:46 +01:00
uvjustin
84725f15a6
Use IntEnum for stream orientation (#81835)
* Use IntEnum for stream orientation

* Rename enum values

* Add comments

* Fix import
2022-11-09 07:28:28 -08:00
Jc2k
9de4d7cba3
Fix homekit_controller climate entity not becoming active when changing modes (#81868) 2022-11-09 15:27:36 +00:00
Aarni Koskela
ec316e94ed
RuuviTag BLE sensor support (#81327) 2022-11-09 08:35:30 -06:00
Ernst Klamer
b72876d369
Add support for BTHome V2 to bthome (#81811)
* Add BTHome v2 support

* Add new sensor types

* Add new sensor types
2022-11-09 15:31:58 +01:00
Vincent Knoop Pathuis
0cd9fe3288
Landis+Gyr Heat Meter code improvements (#81184) 2022-11-09 13:45:28 +01:00
Avishay
92b5721f80
Fix modbus hvac mode keys (#81747)
Change the HVAC mode register conf constants
2022-11-09 11:09:21 +01:00
Jan Bouwhuis
12d76a8a4f
Address late review of config entry wait for states tests (#81801)
* Late review on tests #81771

* Clean-up duplicate assignment
2022-11-08 22:14:17 +01:00
Aarni Koskela
6021cedb09
deconz: Use partition instead of split where possible (#81804)
* deconz: Use partition instead of split where possible

With a smattering of code deduplication

Split out of #81493

* Update homeassistant/components/deconz/util.py

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2022-11-08 20:54:01 +01:00
Jan Bouwhuis
3cc9ecf1dc
Implement ConfigEntry async_wait_for_states (#81771)
* Implement async_wait_for_states

* stale docstr, remove hints

* Assert return states for tests
2022-11-08 17:18:40 +01:00
J. Nick Koston
2cb58b8189
Fix off by one in HomeKit iid allocator (#81793) 2022-11-08 09:20:03 -06:00
Aaron Bach
45be2a260e
Add re-auth flow for OpenUV (#79691) 2022-11-08 07:41:09 -07:00
epenet
c585817e67
Adjust REST schema validation (#81723)
fixes undefined
2022-11-08 11:18:58 +01:00
J. Nick Koston
53c1c2eb56
Fix homekit bridge iid allocations (#81613)
fixes undefined
2022-11-08 11:15:16 +01:00
Steven Looman
274049cc8e
Fix ignored upnp discoveries not being matched when device changes its unique identifier (#81240)
Fixes https://github.com/home-assistant/core/issues/78454
fixes undefined
2022-11-08 11:02:53 +01:00
Joakim Plate
fc0e0bf099
Support for direct modbus connection to nibe pumps (#80557)
* Initial support for modbus

* Complete test coverage of config flow

* Bump to 1.1.0 with corrected numbers

* Handle missing mapping for reset-alarm

* Fixup type checks after library bump

* Adjust coil number

* Move word_swap to nibegw

* Adjust to 1.1.2 with fixes

* Add series property

* Add S series models

* Correct test for invalid host

* Apply suggestions from code review

Co-authored-by: J. Nick Koston <nick@koston.org>

* Move some things into library

* Adjust strings somewhat

* Correct black

* Correct test after validation change

Co-authored-by: J. Nick Koston <nick@koston.org>
2022-11-08 10:49:47 +01:00
Robert Svensson
23bed25e52
Remove old UniFi POE client implementation (#81749)
Remove all references to POE client implementation
2022-11-08 07:48:54 +01:00
Robert Svensson
3444d2af1a
UniFi switch entity description (#81680)
* Consolidate switch entities to one class

* Move turn on/off into UnifiSwitchEntity

* Add event subscription
Remove storing entity for everything but legacy poe switch

* Only one entity class

* Improve generics naming

* Rename loader to description

* Improve control_fn naming

* Move wrongfully placed method that should only react to dpi apps being emptied

* Improve different methods

* Minor renaming and sorting

* Mark callbacks properly
2022-11-08 07:38:31 +01:00
Erik Montnemery
c3d4a9cd99
Create repairs issue if an outdated currency code is configured (#81717)
* Create repairs issue if an outdated currency code is configured

* Add script for updating list of currencies

* Use black for formatting

* Move currency codes to a separate file

* Address review comments
2022-11-08 07:21:09 +01:00
J. Nick Koston
c2c26e2608
Fix check for duplicate config entry reauth when context is passed or augmented (#81753)
fixes https://github.com/home-assistant/core/issues/77578
2022-11-07 21:19:57 -06:00
J. Nick Koston
5c38321c4f
Ignore unspecified addresses from zeroconf (#81620) 2022-11-07 15:50:45 -06:00
Joakim Sørensen
e7a616b8ff
Use location info helper for IP in Cloudflare DNS (#81714)
* Use location info helper for IP in Cloudflare DNS

* simplify

* Blow up

* coverage
2022-11-07 19:31:47 +01:00
puddly
74357bef15
Use a unique ID for the Yellow ZHA hardware discovery (#81523)
* Set unique ID for hardware discovery

* Use the provided `name` for discovered hardware
2022-11-07 11:28:28 -05:00
puddly
604cd46ec9
Enable SkyConnect config flow and use correct case in USB matching (#81522)
* Ensure `USBCallbackMatcher` uses the appropriate case for each field

* Enable the config flow for the SkyConnect integration

* Update unit test
2022-11-07 17:26:16 +01:00
puddly
3788a950e6
Validate matcher field case in usb.async_is_plugged_in (#81514)
* Support case-insensitive matching

* Revert "Support case-insensitive matching"

This reverts commit 0fdb2aa6bc.

* Explicitly check the case of matcher fields in `async_is_plugged_in`
2022-11-07 17:14:57 +01:00
J. Nick Koston
43745dbc6c
Pass explict time in logbook tests (#81725)
The CI sets the timezone to US/Pacific and the logbook
uses start_of_local_day when called without a time.

We now call the logbook api with a specific time to
avoid them being out of sync since the test would
fail at CET 8:55am on Mon Nov 7th 2022 (and probably
other dates)
2022-11-07 16:26:38 +01:00
StefanIacobLivisi
902e075d58
Add livisi integration (#76863) 2022-11-07 14:40:23 +01:00
epenet
934cec9778
Modernize rest switch tests (#81306)
* Adjust rest switch tests to use schema validation

* Simplify

* Use async_setup_component in tests

* Rewrite tests

* Add patch

* Remove patch

* Adjust mock
2022-11-07 13:08:05 +01:00
David F. Mulcahey
d1fd141e8c
Bump ZHA quirks and associated changes (#81587) 2022-11-07 12:28:59 +01:00
J. Nick Koston
2bea77549d
Fix creating multiple ElkM1 systems with TLS 1.2 (#81627)
fixes https://github.com/home-assistant/core/issues/81516
2022-11-07 12:09:36 +01:00
J. Nick Koston
11a55d6d4c
Fix flapping logbook tests (#81695) 2022-11-07 11:41:02 +01:00
Benjamin Salchow
1d633ac484
Accept input register in Modbus binary sensor (#81352)
Adds input register as valid option for modbus binary_sensor

Co-authored-by: jan iversen <jancasacondor@gmail.com>
2022-11-07 10:14:12 +01:00
tstabrawa
499839c596
Fix nuheat temporary hold time (#81635)
Co-authored-by: J. Nick Koston <nick@koston.org>
2022-11-06 19:16:22 -06:00
Aarni Koskela
496f78bae5
FIX: patch correct async_setup_entry in tilt_ble (#81671) 2022-11-06 13:37:44 -06:00
Allen Porter
2ad1d31119
Bump gcal_sync to 4.0.0 (#81562)
* Bump gcal_sync to 2.2.4

* Bump gcal sync to 4.0.0

* Add Calendar accessRole fields which are now required
2022-11-05 17:06:34 -07:00
Avi Miller
f66009c77d
Fix lifx.set_state so it works with kelvin and color_temp_kelvin and color names (#81515) 2022-11-05 16:46:00 -05:00
Aaron Bach
5884f50a82
Bump pyairvisual to 2022.11.1 (#81556) 2022-11-05 12:58:47 -05:00
J. Nick Koston
883ac12bcb
Add additional coverage for adding multiple elkm1 instances (#81528)
* Add additional coverage for adding multiple elkm1 instances

* fix copy error
2022-11-05 15:57:32 +01:00
David F. Mulcahey
83c6a7e18b
Fix invalid min and max color temp in bad ZHA light devices (#81604)
* Fix ZHA default color temps

* update test
2022-11-05 08:40:28 -04:00
Renat Sibgatulin
dd5baa6e48
Add air-Q integration (air quality sensors) (#76999)
* Added initial files for air-Q integration

* Allow FIXME comments in pylint (temporary)

Also reintroduce --ignore-missing-annotations=y

* Set up air-q entry to connect to aioairq's API (initial attempt)

Also add necessary constants

* Implement a class for sensors and its update logic

Very early stage, WIP

* Zeroconf and authentication are working

* Complete the bare-bone minimal working version

Specifically, make AirQSensor update its values.

* Handle invalid authentication gracefully

* Handle ClientConnectionError gracefully

* Add field hint for the login form

The key in the schema, which defines the form in
`ConfigFlow.async_show_form` is looked up in both `airq/strings/json`
and `airq/translations/en.json`. I am still not 100% sure how this
lookup is performed. WIP

* Minor cleanups

* Extend sensor list to all supported by SensorDeviceClass

Also manage warming up sensors

* aioairq is published to PyPI and mentioned in requirements

* Reordered constants and list content alphabetically

As required by style guides. Also turned SENSOR_TYPES to a list

* Updated file docstrings for a dev unfamiliar w/homeassistant like myself

* Adding a bit of logging for the integration setup process

* Expose scan interval & smoothing flag

Also streamline test_authentication in config_flow.

* Fix a type annotation mistake

* Use as many constants from homeassistant.const as possible

My only concern is using CONST_IP_ADDRESS = "ip_address" for smth which
stands for both IP address and mDNS...

* Temporarily rollback ConfigFlow.async_step_configure and use defaults

TODO: implement OptionFlowHandler instead

* Define custom Coordinator, w subset of airq config

The latter is then accessed from entity / sensor constructors to define
correct DeviceInfo

* Provide translations to de & fr + minor changes to en

* Provide translations to ru + a minor en changes

* Make translation a little more helpful and polite

* Fix devicename and entry title

* Remove stale commented out code

* Test config_flow

At this point two helper functions which interact with the external
library are not tested

* Clean up unrelated and meant as temporary changes

* Clean up unnecessary comments meant for internal use

* Move fetching config to a dedicated async coordinator method

As opposed to it being a potentially poorly justified step in
async_setup_entry

* Remove zeroconf support since it is not yet ready

* Remove translations other than en

* Remove unnecessary comments, manifest.json entries, and constants

* Improve exception handling

- `_LOGGER` uses `debug` and not `error` levels.
- Drop `ClientConnect` and catch `aiohttop.ClientConnectError` directly
- Drop `Exception` as it is not expected from `aioairq` (remove the
  corresponding test too)

* Drop strings for obsolete errors and steps

Specifically, `unknown` error isn't caught any more. `configure` step
has also been removed.

* Refactor en.json to be consistent with strings.json

* Move target_route from a coordinator argument to a constant

At this point a user cannot configure the target_route route, thus it
does not make sense to expose it half-heartedly in
`AirQCoordinator.__init__`, since it cannot be accessed.

* Fix an async call in `AirQCoordinator.async_setup_entry`

* Refactor underlying aioairq API

- Use `homeassistant.helpers.aiohttp.async_get_clientsession` and pass a
  single persistent session to `aioariq.AirQ.__init__`
- `aioairq.AirQ.fetch_device_info` now returns a `DeviceInfo` object heavily
  inspired and almost compatible with `homeassistant.helpers.entity.DeviceInfo`.
  Make heavier use of this object and define a single `DeviceInfo` in the
  `AirQCoordinator` (instead of recreating the same object for each sensor
  of the device in `sensor.AirQSensor`)
- Drop two helper functions in `config_flow.py` and operate on `aioariq.AirQ`
  methods directly

* Fix the version of aioairq

* Add 15 more sensors + icons

* Remove cnt* & TypPS, change units of health & performance

* Add 12 more sensors

* Add a missing icon

* Gracefully handle device not being available on setup

If the device and the host are not on the same WiFi,
ServerTimeoutError is raised, which is caught by
ClientConnectionError.
If the device is powered off, ClientConnectionError is expected.
In both cases, ConfigEntryNotReady is raised, as prescribed by the docs.
Newer version of aioairq times-out far quicker than the default 5 mins.

* Rename two sensors

* Validate provided IP address / mDNS

aioairq now raises InvalidInput if provided IP / mDNS does not seem
valid. Handle this exception correctly

* Apply suggestions from code review

Clean up the comments and rename the logger

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Artem Draft <Drafteed@users.noreply.github.com>

* Only fetch device info during the first refresh

- Fetched info is stored in AirQCoordinator.device_info.
- In `AirQSensor.native_value` only multiply by the factor if
  the sensor reading is not None
- Fix the tests for ConfigFlow for aioairq==0.2.3. Specifically
  make the dummy data pass the new validation step upstream
  + add a test which fails it

* Drop custom device classes for now

* Apply suggestions from code review

Co-authored-by: Artem Draft <Drafteed@users.noreply.github.com>

* Only fetch device info during ConfigFlow.async_step_user

Store the result obtained by `airq.fetch_device_info` it in
`config_entry.data`. Pass the entire config entry to `AirQCoordinator`
and build the entire `homeassistant.helpers.entity.DeviceInfo` in the
`AirQCoordinator.__init__`. This makes
`AirQCoordinator._async_fetch_device_info` and overloaded
`AirQCoordinator._async_config_entry_first_refresh` obsolete.

Bump aioairq version.

Turn update_interval from `AirQCoordinator.__init__` argument into a
contestant.

* Custom entity description exposing a hook to modify sensor value

Use a `AirQEntityDescription` with a callable `value_fn` which allows to
change the sensor value retrieved from the device. Note that the
callable does not handle data retrieval itself (even from
`coordinator.data`). Instead it is purely a hook to transform obtained
value.

* Avoid duplicated use of unique_id

Device info is fetched  during the `ConfigFlow.async_user_step`.
`unique_id` is taken from the device info and is **not** stored
in `config_entry.data`. Subsequently `config_entry.unique_id` is
used instead.

* Drop unnecessary try-except

Co-authored-by: Artem Draft <Drafteed@users.noreply.github.com>

* Clarify the use of value_transform_fn

* Refactor the use of lambdas in AirQEntityDescription

Now it is the job of the callable under `value` to get the sensor
reading from the coordinator's data. Factoring this functionality into a
callback decouples  the key of the description from the key of dict,
returned by the API, so `AirQEntityDescription` no longer requires its key
to be set to smth clearly internal (e.g. `nh3_MR100`).

* Use a callback to update native_value

Since all `native_value`s are updated synchronously, it can as well be
done in a callback for better state consistency (right?)

* Revert the description keys to match data keys

Must match given the current way of identifying available sensors. On a
broader scale, they must match to be able to relate the descriptions to
sensors, unless a separate lookup table is maintained.

* Reduce number of loops when adding sensors

Filtering warming up sensors and non-sensor keys can be combined with
adding entities.

* Remove obsolete imports

* Update integrations.json

* Add integration_type

Integration supports multiple devices => hub

Co-authored-by: dl2080 <daniel.lehmann@runbox.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Artem Draft <Drafteed@users.noreply.github.com>
Co-authored-by: Daniel Lehmann <43613560+dl2080@users.noreply.github.com>
Co-authored-by: Martin Selbmann <job@martin-selbmann.de>
2022-11-03 23:13:57 +01:00
hahn-th
918940a0c6
Add HmIP-WGC to homematicip_cloud integration (#75733)
* Add HmIP-WGC

* remove unused code

* removed test test_manually_configured_platform
2022-11-03 12:03:49 +01:00
Rami Mosleh
328eda044a
Use DataUpdateCoordinator for glances (#72748)
* use DataUpdateCoordinator for glances

add tests to increase coverage

fix test_config_flow.py

fix codecov/patch

remove unused const, minor tweaks

remove invalid_auth test as it is not implemented

fix type hints

* change to async_forward_entry_setups

* Use Dataupdatecoordinator for glances

* minor fixex

* minor fixes

* minor fix

* remove support_versions const

* coe cleanup

* address comments

* fix sensor native_value

* Rename entry to entry_data in `get_api`

* Remove whitespace in sensor name
2022-11-03 10:02:25 +01:00