core/homeassistant/generated/integrations.json

7235 lines
179 KiB
JSON
Raw Normal View History

{
"integration": {
"3_day_blinds": {
"name": "3 Day Blinds",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"abode": {
"name": "Abode",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"accuweather": {
"name": "AccuWeather",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"single_config_entry": true
},
"acer_projector": {
"name": "Acer Projector",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"acmeda": {
"name": "Rollease Acmeda Automate",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"acomax": {
"name": "Acomax",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"actiontec": {
"name": "Actiontec",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"adax": {
"name": "Adax",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"adguard": {
"name": "AdGuard Home",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"ads": {
"name": "ADS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"advantage_air": {
"name": "Advantage Air",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"aemet": {
"name": "AEMET OpenData",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"aep_ohio": {
"name": "AEP Ohio",
"integration_type": "virtual",
"supported_by": "opower"
},
"aep_texas": {
"name": "AEP Texas",
"integration_type": "virtual",
"supported_by": "opower"
},
"aftership": {
"name": "AfterShip",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"agent_dvr": {
"name": "Agent DVR",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"airly": {
"name": "Airly",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"airnow": {
"name": "AirNow",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
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 22:13:57 +00:00
"airq": {
"name": "air-Q",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"airthings": {
"name": "Airthings",
"integrations": {
"airthings": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Airthings"
},
"airthings_ble": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "Airthings BLE"
}
}
},
"airtouch4": {
"name": "AirTouch 4",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"airtouch5": {
"name": "AirTouch 5",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"airvisual": {
"name": "AirVisual",
"integrations": {
"airvisual": {
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "AirVisual Cloud"
},
"airvisual_pro": {
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling",
"name": "AirVisual Pro"
}
}
},
"airzone": {
"name": "Airzone",
Add Airzone Cloud integration (#93238) * airzone-cloud: add new integration Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Add missing aioairzone-cloud to test requirements Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone-cloud to v0.0.4 Allows to handle TooManyRequests exception on coordinator. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * aioairzone_cloud: reduce API requests Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: remove system_zone_id As opposed to the Local API of Airzone devices, the Cloud API provides unique IDs for both systems and zones, so we can remove the system_zone_id copied from the Local API integration. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: minor improvements Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * tests: airzone_cloud: simplify mock_get_webserver Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone to v0.0.5 - Add token refresh and relogin support. - Improve fetching installation devices. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: add to strict typing Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone to v0.0.7 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * trigger CI * airzone_cloud: remove unneeded api_get_user call Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Add Airzone brand Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone to v0.1.1 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: use unique_id instead of entry_id Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: remove special handling of TooManyRequests Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: bump coordinator timeout to 30s Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: make AirzoneEntity an ABC Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: fix strings typo Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * tests: airzone_cloud: simplify webserver mock Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone-cloud to v0.1.2 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --------- Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-05-23 17:22:50 +00:00
"integrations": {
"airzone": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "Airzone"
},
"airzone_cloud": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push",
Add Airzone Cloud integration (#93238) * airzone-cloud: add new integration Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Add missing aioairzone-cloud to test requirements Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone-cloud to v0.0.4 Allows to handle TooManyRequests exception on coordinator. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * aioairzone_cloud: reduce API requests Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: remove system_zone_id As opposed to the Local API of Airzone devices, the Cloud API provides unique IDs for both systems and zones, so we can remove the system_zone_id copied from the Local API integration. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: minor improvements Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * tests: airzone_cloud: simplify mock_get_webserver Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone to v0.0.5 - Add token refresh and relogin support. - Improve fetching installation devices. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: add to strict typing Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone to v0.0.7 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * trigger CI * airzone_cloud: remove unneeded api_get_user call Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Add Airzone brand Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone to v0.1.1 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: use unique_id instead of entry_id Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: remove special handling of TooManyRequests Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: bump coordinator timeout to 30s Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: make AirzoneEntity an ABC Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * airzone_cloud: fix strings typo Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * tests: airzone_cloud: simplify webserver mock Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> * Update aioairzone-cloud to v0.1.2 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --------- Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-05-23 17:22:50 +00:00
"name": "Airzone Cloud"
}
}
},
"aladdin_connect": {
"name": "Aladdin Connect",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"alarmdecoder": {
"name": "AlarmDecoder",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"alert": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"alpha_vantage": {
"name": "Alpha Vantage",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
2022-10-04 13:24:55 +00:00
"amazon": {
"name": "Amazon",
"integrations": {
"alexa": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Amazon Alexa"
},
"amazon_polly": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Amazon Polly"
},
"aws": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Amazon Web Services (AWS)"
},
"fire_tv": {
"integration_type": "virtual",
"config_flow": false,
"supported_by": "androidtv",
"name": "Amazon Fire TV"
},
2022-10-04 13:24:55 +00:00
"route53": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "AWS Route53"
}
}
},
"amberelectric": {
"name": "Amber Electric",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ambiclimate": {
"name": "Ambiclimate",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ambient_station": {
"name": "Ambient Weather Station",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"amcrest": {
"name": "Amcrest",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"amp_motorization": {
"name": "AMP Motorization",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"ampio": {
"name": "Ampio Smart Smog System",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
Add Homeassistant Analytics Insights integration (#107634) * Add Homeassistant Analytics integration * Add Homeassistant Analytics integration * Add Homeassistant Analytics integration * Fix feedback * Fix test * Update conftest.py * Add some testcases * Make code clear * log exception * Bump python-homeassistant-analytics to 0.2.1 * Bump python-homeassistant-analytics to 0.3.0 * Change domain to homeassistant_analytics_consumer * Add integration name to config flow selector * Update homeassistant/components/homeassistant_analytics_consumer/manifest.json Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * Fix hassfest * Apply suggestions from code review Co-authored-by: Robert Resch <robert@resch.dev> * Bump python-homeassistant-analytics to 0.4.0 * Rename to Home Assistant Analytics Insights * Update homeassistant/components/analytics_insights/config_flow.py Co-authored-by: Robert Resch <robert@resch.dev> * Update homeassistant/components/analytics_insights/manifest.json Co-authored-by: Robert Resch <robert@resch.dev> * Rename to Home Assistant Analytics Insights * add test * Fallback to 0 when there is no data found * Allow to select any integration * Fix tests * Fix tests * Update tests/components/analytics_insights/conftest.py Co-authored-by: Robert Resch <robert@resch.dev> * Update tests/components/analytics_insights/test_sensor.py Co-authored-by: Robert Resch <robert@resch.dev> * Fix format * Fix tests --------- Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 09:32:31 +00:00
"analytics_insights": {
"name": "Home Assistant Analytics Insights",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"single_config_entry": true
Add Homeassistant Analytics Insights integration (#107634) * Add Homeassistant Analytics integration * Add Homeassistant Analytics integration * Add Homeassistant Analytics integration * Fix feedback * Fix test * Update conftest.py * Add some testcases * Make code clear * log exception * Bump python-homeassistant-analytics to 0.2.1 * Bump python-homeassistant-analytics to 0.3.0 * Change domain to homeassistant_analytics_consumer * Add integration name to config flow selector * Update homeassistant/components/homeassistant_analytics_consumer/manifest.json Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * Fix hassfest * Apply suggestions from code review Co-authored-by: Robert Resch <robert@resch.dev> * Bump python-homeassistant-analytics to 0.4.0 * Rename to Home Assistant Analytics Insights * Update homeassistant/components/analytics_insights/config_flow.py Co-authored-by: Robert Resch <robert@resch.dev> * Update homeassistant/components/analytics_insights/manifest.json Co-authored-by: Robert Resch <robert@resch.dev> * Rename to Home Assistant Analytics Insights * add test * Fallback to 0 when there is no data found * Allow to select any integration * Fix tests * Fix tests * Update tests/components/analytics_insights/conftest.py Co-authored-by: Robert Resch <robert@resch.dev> * Update tests/components/analytics_insights/test_sensor.py Co-authored-by: Robert Resch <robert@resch.dev> * Fix format * Fix tests --------- Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 09:32:31 +00:00
},
"android_ip_webcam": {
"name": "Android IP Webcam",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"androidtv": {
"name": "Android Debug Bridge",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"androidtv_remote": {
"name": "Android TV Remote",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"anel_pwrctrl": {
"name": "Anel NET-PwrCtrl",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
Add Anova integration (#86254) * init setup of Anova Sous Vide * bump anova-wifi to 0.2.4 * Removed yaml support * Bump to anova-wifi 0.2.5 * Added support for adding sous vide while offline * Added basic test for sensor * added better tests for sensors and init * expanded code coverage * Decreased timedelta to lowest functioning value. * Updating my username * migrate to async_forward_entry_setups * applying pr recommended changes * bump anova-wifi to 0.2.7 * Improvements to hopefully get this review ready * formatting changes * clean ups for pr review * remove unneeded unique id check. * bump ao anova_wifi 0.3.0 * rename device_id to device_unique_id * renamed to 'anova' * added unique_id to MockConfigEntry * removed leftover anova sous vides * added device id to strings * added error for incorrect device id * add has_entity_name * added attr name for tests * added authentication functionality * bump to 0.4.3 * split entity into its own class/object * pulling firmware version out of async_setup Co-authored-by: J. Nick Koston <nick@koston.org> * addressed pr changes * fixed pytest * added anova data model * removed unneeded time change * add logging in package * rework step_user * Update homeassistant/components/anova/sensor.py Co-authored-by: J. Nick Koston <nick@koston.org> * Removed lower from attr unique id Co-authored-by: J. Nick Koston <nick@koston.org> * Removed unneeded member variables in sensor Co-authored-by: J. Nick Koston <nick@koston.org> * removed repeated subclass attr Co-authored-by: J. Nick Koston <nick@koston.org> * simplify update_failed test * created descriptionentity * bump to 0.6.1 limit ws connect * add translation for sensor entities * version bump - support pro model * add anova to strict typing * fixed sensor not getting datas type * Apply suggestions from code review Co-authored-by: J. Nick Koston <nick@koston.org> * Check for new devices in init * style changes * return false instead of config entry not ready * move serialize_device_list to utils * move repeating device check into api * moved unneeded code out of try except * fixed tests to get 100% cov * Update homeassistant/components/anova/strings.json Co-authored-by: J. Nick Koston <nick@koston.org> --------- Co-authored-by: J. Nick Koston <nick@koston.org>
2023-04-22 23:05:14 +00:00
"anova": {
"name": "Anova",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"anthemav": {
"name": "Anthem A/V Receivers",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"anwb_energie": {
"name": "ANWB Energie",
"integration_type": "virtual",
"supported_by": "energyzero"
},
2023-12-08 16:17:42 +00:00
"aosmith": {
"name": "A. O. Smith",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"apache_kafka": {
"name": "Apache Kafka",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"apcupsd": {
"name": "APC UPS Daemon",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"appalachianpower": {
"name": "Appalachian Power",
"integration_type": "virtual",
"supported_by": "opower"
},
2022-09-28 20:21:09 +00:00
"apple": {
"name": "Apple",
"integrations": {
"apple_tv": {
"integration_type": "hub",
2022-09-28 20:21:09 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Apple TV"
},
2022-10-04 13:24:55 +00:00
"homekit_controller": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push"
2022-10-04 13:24:55 +00:00
},
2022-09-28 20:21:09 +00:00
"homekit": {
"integration_type": "hub",
2022-09-28 20:21:09 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "HomeKit Bridge"
2022-09-28 20:21:09 +00:00
},
2022-10-04 13:24:55 +00:00
"ibeacon": {
"integration_type": "hub",
2022-09-28 20:21:09 +00:00
"config_flow": true,
2022-10-04 13:24:55 +00:00
"iot_class": "local_push",
"name": "iBeacon Tracker"
},
"icloud": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Apple iCloud"
},
"itunes": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Apple iTunes"
},
"weatherkit": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Apple WeatherKit"
2022-09-28 20:21:09 +00:00
}
}
},
"apprise": {
"name": "Apprise",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"aprilaire": {
"name": "Aprilaire",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"aprs": {
"name": "APRS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"aqualogic": {
"name": "AquaLogic",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"aquostv": {
"name": "Sharp Aquos TV",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
2022-10-31 03:50:46 +00:00
"aranet": {
"name": "Aranet",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"arcam_fmj": {
"name": "Arcam FMJ Receivers",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"arest": {
"name": "aREST",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"arris_tg2492lg": {
"name": "Arris TG2492LG",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"aruba": {
2022-10-04 13:24:55 +00:00
"name": "Aruba",
"integrations": {
"aruba": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Aruba"
},
"cppm_tracker": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Aruba ClearPass"
}
}
},
"arwn": {
"name": "Ambient Radio Weather Network",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"aseko_pool_live": {
"name": "Aseko Pool Live",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"assist_pipeline": {
"name": "Assist pipeline",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
2022-10-04 13:24:55 +00:00
"asterisk": {
"name": "Asterisk",
"integrations": {
"asterisk_cdr": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Asterisk Call Detail Records"
},
"asterisk_mbox": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "Asterisk Voicemail"
}
}
},
"asuswrt": {
"name": "ASUSWRT",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"atag": {
"name": "Atag",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"aten_pe": {
"name": "ATEN Rack PDU",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"atlanticcityelectric": {
"name": "Atlantic City Electric",
"integration_type": "virtual",
"supported_by": "opower"
},
"atome": {
"name": "Atome Linky",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"august": {
2022-10-04 13:24:55 +00:00
"name": "August Home",
"integrations": {
"august": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_push",
"name": "August"
},
"yalexs_ble": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Yale Access Bluetooth"
}
}
},
"august_ble": {
"name": "August Bluetooth",
"integration_type": "virtual",
"supported_by": "yalexs_ble"
},
"aurora": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"aurora_abb_powerone": {
"name": "Aurora ABB PowerOne Solar PV",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"aussie_broadband": {
"name": "Aussie Broadband",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"avion": {
"name": "Avi-on",
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state"
},
"awair": {
"name": "Awair",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"axis": {
"name": "Axis",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"baf": {
"name": "Big Ass Fans",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"baidu": {
"name": "Baidu",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"balboa": {
"name": "Balboa Spa Client",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
Add bang_olufsen integration (#93462) * Add bangolufsen integration * add untested files to .coveragerc * Simplify integration to media_player platform * Remove missing files from .coveragerc * Add beolink_set_relative_volume custom service Tweaks * Remove custom services Remove grouping as it was dependent on custom services * Update API to 3.2.1.150.0 Reduce and optimize code with feedback from joostlek Tweaks * Updated testing * Remove unused options schema * Fix bugfix setting wrong state * Fix wrong initial state * Bump API * Fix Beosound Level not reconnecting properly * Remove unused constant * Fix wrong variable checked to determine source * Update integration with feedback from emontnemery * Update integration with feedback from emontnemery * Remove unused code * Move API client into dataclass Fix not all config_flow exceptions caught Tweaks * Add Bang & Olufsen brand * Revert "Add Bang & Olufsen brand" This reverts commit 57b2722078ae0b563880306c6457d2cf3f528070. * Remove volume options from setup Simplify device checks rename integration to bang_olufsen update tests to pass Update API * Remove _device from base Add _device to websocket * Move SW version device update to websocket Sort websocket variables * Add WebSocket connection test * Remove unused constants * Remove confirmation form Make discovered devices get added to Home Assistant immediately Fix device not being available on mdns discovery Change config flow aborts to forms with error * Update tests for new config_flow Add missing api_exception test * Restrict manual and discovered IP addresses to IPv4 * Re-add confirmation step for zeroconf discovery Improve error messages Move exception mapping dict to module level * Enable remote control WebSocket listener * Update tests
2024-01-24 11:00:51 +00:00
"bang_olufsen": {
"name": "Bang & Olufsen",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"bayesian": {
"name": "Bayesian",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bbox": {
"name": "Bbox",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"beewi_smartclim": {
"name": "BeeWi SmartClim BLE sensor",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bge": {
"name": "Baltimore Gas and Electric (BGE)",
"integration_type": "virtual",
"supported_by": "opower"
},
"bitcoin": {
"name": "Bitcoin",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"bizkaibus": {
"name": "Bizkaibus",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"blackbird": {
"name": "Monoprice Blackbird Matrix Switch",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"blebox": {
"name": "BleBox devices",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"blink": {
"name": "Blink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"blinksticklight": {
"name": "BlinkStick",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bliss_automation": {
"name": "Bliss Automation",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"bloc_blinds": {
"name": "Bloc Blinds",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"blockchain": {
"name": "Blockchain.com",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"bloomsky": {
"name": "BloomSky",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"blue_current": {
"name": "Blue Current",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"bluemaestro": {
"name": "BlueMaestro",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"bluesound": {
"name": "Bluesound",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bluetooth": {
"name": "Bluetooth",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"bluetooth_le_tracker": {
"name": "Bluetooth LE Tracker",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"bluetooth_tracker": {
"name": "Bluetooth Tracker",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bmw_connected_drive": {
"name": "BMW Connected Drive",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"bond": {
"name": "Bond",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"bosch_shc": {
"name": "Bosch SHC",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"brandt": {
"name": "Brandt Smart Control",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"brel_home": {
"name": "Brel Home",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
Add bring integration (#108027) * add bring integration * fix typings and remove from strictly typed - wait for python-bring-api to be ready for strictly typed * make entity unique to user and list - before it was only list, therefore the same list imported by two users would have failed * simplify bring attribute Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * cleanup and code simplification * remove empty fields in manifest * __init__.py aktualisieren Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * __init__.py aktualisieren Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * strings.json aktualisieren Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * streamline async calls * use coordinator refresh * fix order in update call and simplify bring list * simplify the config_flow * Update homeassistant/components/bring/manifest.json Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * add unit testing for __init__.py * cleanup comments * use dict instead of list * Update homeassistant/components/bring/todo.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * clean up * update attribute name * update more attribute name * improve unit tests - remove patch and use mock in conftest * clean up tests even more * more unit test inprovements * remove optional type * minor unit test cleanup * Update .coveragerc Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-29 14:08:11 +00:00
"bring": {
"name": "Bring!",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"broadlink": {
"name": "Broadlink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"brother": {
"name": "Brother Printer",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"brottsplatskartan": {
"name": "Brottsplatskartan",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"browser": {
"name": "Browser",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"brunt": {
"name": "Brunt Blind Engine",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"bsblan": {
"name": "BSB-Lan",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"bswitch": {
"name": "BSwitch",
"integration_type": "virtual",
"supported_by": "switchbee"
},
"bt_home_hub_5": {
"name": "BT Home Hub 5",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bt_smarthub": {
"name": "BT Smart Hub",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"bthome": {
"name": "BTHome",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"bticino": {
"name": "BTicino",
"integration_type": "virtual",
"supported_by": "netatmo"
},
"bubendorff": {
"name": "Bubendorff",
"integration_type": "virtual",
"supported_by": "netatmo"
},
"buienradar": {
"name": "Buienradar",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"caldav": {
"name": "CalDAV",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"canary": {
"name": "Canary",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
New integration Midea ccm15 climate (#94824) * Initial commit * Correct settings for config flow * Use scan interval * Store proper data * Remove circular dependency * Remove circular dependency * Integration can be initialized * Fix defaults * Add setup entry * Add setup entry * Dont block forever * Poll during async_setup_entry * Remove not needed async methods * Add debug info * Parse binary data * Parse binary data * Use data to update device * Use data to update device * Add CCM15DeviceState * Use DataCoordinator * Use DataCoordinator * Use DataCoordinator * Use CoordinatorEntity * Use CoordinatorEntity * Call update API * Call update API * Call update API * Call update API * Use dataclass * Use dataclass * Use dataclass * Use dataclass * Use dataclass * Use dataclass * Use dataclass * Use dataclass * Fix bugs * Implement swing * Support swing mode, read only * Add unit test * Swing should work * Set swing mode * Add DeviceInfo * Add error code * Add error code * Add error code * Add error code * Initial commit * Refactor * Remove comment code * Try remove circular ref * Try remove circular ref * Remove circular ref * Fix bug * Fix tests * Fix tests * Increase test coverage * Increase test coverage * Increase test coverrage * Add more unit tests * Increase coverage * Update coordinator.py * Fix ruff * Set unit of temperature * Add bounds check * Fix unit tests * Add test coverage * Use Py-ccm15 * Update tests * Upgrade dependency * Apply PR feedback * Upgrade dependency * Upgrade dependency * Upgrade dependency * Force ruff * Delete not needed consts * Fix mypy * Update homeassistant/components/ccm15/coordinator.py Co-authored-by: Robert Resch <robert@resch.dev> * Apply PR Feedback * Apply PR Feedback * Apply PR Feedback * Apply PR Feedback * Apply PR Feedback * Apply PR Feedback * Fix unit tests * Move climate instance * Revert "Move climate instance" This reverts commit cc5b9916b79e805b77cc0062da67aea61e22e7c5. * Apply PR feedback * Apply PR Feedback * Remove scan internal parameter * Update homeassistant/components/ccm15/coordinator.py Co-authored-by: Robert Resch <robert@resch.dev> * Remove empty keys * Fix tests * Use attr fields * Try refactor * Check for multiple hosts * Check for duplicates * Fix tests * Use PRECISION_WHOLE * Use str(ac_index) * Move {self._ac_host}.{self._ac_index} to construtor * Make it fancy * Update homeassistant/components/ccm15/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Move const to class variables * Use actual config host * Move device info to construtor * Update homeassistant/components/ccm15/climate.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Set name to none, dont ask for poll * Undo name change * Dont use coordinator in config flow * Dont use coordinator in config flow * Check already configured * Apply PR comments * Move above * Use device info name * Update tests/components/ccm15/test_coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/ccm15/test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Apply feedback * Remove logger debug calls * Add new test to check for dupplicates * Test error * Use better name for test * Update homeassistant/components/ccm15/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/ccm15/climate.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/ccm15/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Use prop data for all getters * Fix tests * Improve tests * Improve tests, v2 * Replace log message by comment * No need to do bounds check * Update config_flow.py * Update test_config_flow.py * Update test_coordinator.py * Update test_coordinator.py * Create test_climate.py * Delete tests/components/ccm15/test_coordinator.py * Update coordinator.py * Update __init__.py * Create test_climate.ambr * Update conftest.py * Update test_climate.py * Create test_init.py * Update .coveragerc * Update __init__.py * We need to check bounds after all * Add more test coverage * Test is not None * Use better naming * fix tests * Add available property * Update homeassistant/components/ccm15/climate.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Use snapshots to simulate netwrok failure or power failure * Remove not needed test * Use walrus --------- Co-authored-by: Robert Resch <robert@resch.dev> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-23 20:24:52 +00:00
"ccm15": {
"name": "Midea ccm15 AC Controller",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"cert_expiry": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"channels": {
"name": "Channels",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"circuit": {
"name": "Unify Circuit",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
2022-10-04 13:24:55 +00:00
"cisco": {
"name": "Cisco",
"integrations": {
"cisco_ios": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Cisco IOS"
},
"cisco_mobility_express": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Cisco Mobility Express"
},
"cisco_webex_teams": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Cisco Webex Teams"
}
}
},
"citybikes": {
"name": "CityBikes",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"clementine": {
"name": "Clementine Music Player",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"clickatell": {
"name": "Clickatell",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"clicksend": {
2022-10-04 13:24:55 +00:00
"name": "ClickSend",
"integrations": {
"clicksend": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "ClickSend SMS"
},
"clicksend_tts": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "ClickSend TTS"
}
}
},
"cloudflare": {
"name": "Cloudflare",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"cmus": {
"name": "cmus",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"co2signal": {
"name": "Electricity Maps",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"coautilities": {
"name": "City of Austin Utilities",
"integration_type": "virtual",
"supported_by": "opower"
},
"coinbase": {
"name": "Coinbase",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"color_extractor": {
"name": "ColorExtractor",
"integration_type": "hub",
"config_flow": true
},
"comed": {
"name": "Commonwealth Edison (ComEd)",
"integration_type": "virtual",
"supported_by": "opower"
},
"comed_hourly_pricing": {
"name": "ComEd Hourly Pricing",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"comelit": {
"name": "Comelit SimpleHome",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"comfoconnect": {
"name": "Zehnder ComfoAir Q",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"command_line": {
"name": "Command Line",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"compensation": {
"name": "Compensation",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"concord232": {
"name": "Concord232",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"coned": {
"name": "Consolidated Edison (ConEd)",
"integration_type": "virtual",
"supported_by": "opower"
},
"control4": {
"name": "Control4",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"coolmaster": {
"name": "CoolMasterNet",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"cozytouch": {
"name": "Atlantic Cozytouch",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"cpuspeed": {
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"cribl": {
"name": "Cribl",
"integration_type": "virtual",
"supported_by": "splunk"
},
"crownstone": {
"name": "Crownstone",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"cups": {
"name": "CUPS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"currencylayer": {
"name": "currencylayer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"dacia": {
"name": "Dacia",
"integration_type": "virtual",
"supported_by": "renault"
},
"daikin": {
"name": "Daikin AC",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"danfoss_air": {
"name": "Danfoss Air",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"datadog": {
"name": "Datadog",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"ddwrt": {
"name": "DD-WRT",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"debugpy": {
"name": "Remote Python Debugger",
"integration_type": "service",
"config_flow": false,
"iot_class": "local_push"
},
"deconz": {
"name": "deCONZ",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"decora": {
"name": "Leviton Decora",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"decora_wifi": {
"name": "Leviton Decora Wi-Fi",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"delijn": {
"name": "De Lijn",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"delmarva": {
"name": "Delmarva Power",
"integration_type": "virtual",
"supported_by": "opower"
},
"deluge": {
"name": "Deluge",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"demo": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"denon": {
2022-09-28 21:09:53 +00:00
"name": "Denon",
"integrations": {
"denon": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-09-28 21:09:53 +00:00
"name": "Denon Network Receivers"
},
"denonavr": {
"integration_type": "hub",
2022-09-28 21:09:53 +00:00
"config_flow": true,
"iot_class": "local_push",
2022-09-28 21:09:53 +00:00
"name": "Denon AVR Network Receivers"
},
"heos": {
"integration_type": "hub",
2022-09-28 21:09:53 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Denon HEOS"
}
}
},
"devialet": {
"name": "Devialet",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"device_sun_light_trigger": {
"name": "Presence-based Lights",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
2022-10-04 13:24:55 +00:00
"devolo": {
"name": "devolo",
"integrations": {
"devolo_home_control": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "devolo Home Control"
},
"devolo_home_network": {
"integration_type": "device",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "devolo Home Network"
}
},
"iot_standards": [
"zwave"
]
},
"dexcom": {
"name": "Dexcom",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"diaz": {
"name": "Diaz",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"digital_loggers": {
"name": "Digital Loggers",
"integration_type": "virtual",
"supported_by": "wemo"
},
"digital_ocean": {
"name": "Digital Ocean",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"directv": {
"name": "DirecTV",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"discogs": {
"name": "Discogs",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"discord": {
"name": "Discord",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_push"
},
Add new integration Discovergy (#54280) * Add discovergy integration * Capitalize measurement type as it is in uppercase * Some logging and typing * Add all-time total production power and check if meter has value before adding it * Add tests for Discovergy and changing therefor library import * Disable phase-specific sensor per default, set user_input as default for schema and implement some other suggestions form code review * Removing translation, fixing import and some more review implementation * Fixing CI issues * Check if acces token keys are in dict the correct way * Implement suggestions after code review * Correcting property function * Change state class to STATE_CLASS_TOTAL_INCREASING * Add reauth workflow for Discovergy * Bump pydiscovergy * Implement code review * Remove _meter from __init__ * Bump pydiscovergy & minor changes * Add gas meter support * bump pydiscovergy & error handling * Add myself to CODEOWNERS for test directory * Resorting CODEOWNERS * Implement diagnostics and reduce API use * Make homeassistant imports absolute * Exclude diagnostics.py from coverage report * Add sensors with different keys * Reformatting files * Use new naming style * Refactoring and moving to basic auth for API authentication * Remove device name form entity name * Add integration type to discovergy and implement new unit of measurement * Add system health to discovergy integration * Use right array key when using an alternative_key & using UnitOfElectricPotential.VOLT * Add options for precision and update interval to Discovergy * Remove precision config option and let it handle HA * Rename precision attribute and remove translation file * Some formatting tweaks * Some more tests * Move sensor names to strings.json * Redacting title and unique_id as it contains user email address
2023-06-06 17:44:00 +00:00
"discovergy": {
"name": "Discovergy",
"integration_type": "service",
Add new integration Discovergy (#54280) * Add discovergy integration * Capitalize measurement type as it is in uppercase * Some logging and typing * Add all-time total production power and check if meter has value before adding it * Add tests for Discovergy and changing therefor library import * Disable phase-specific sensor per default, set user_input as default for schema and implement some other suggestions form code review * Removing translation, fixing import and some more review implementation * Fixing CI issues * Check if acces token keys are in dict the correct way * Implement suggestions after code review * Correcting property function * Change state class to STATE_CLASS_TOTAL_INCREASING * Add reauth workflow for Discovergy * Bump pydiscovergy * Implement code review * Remove _meter from __init__ * Bump pydiscovergy & minor changes * Add gas meter support * bump pydiscovergy & error handling * Add myself to CODEOWNERS for test directory * Resorting CODEOWNERS * Implement diagnostics and reduce API use * Make homeassistant imports absolute * Exclude diagnostics.py from coverage report * Add sensors with different keys * Reformatting files * Use new naming style * Refactoring and moving to basic auth for API authentication * Remove device name form entity name * Add integration type to discovergy and implement new unit of measurement * Add system health to discovergy integration * Use right array key when using an alternative_key & using UnitOfElectricPotential.VOLT * Add options for precision and update interval to Discovergy * Remove precision config option and let it handle HA * Rename precision attribute and remove translation file * Some formatting tweaks * Some more tests * Move sensor names to strings.json * Redacting title and unique_id as it contains user email address
2023-06-06 17:44:00 +00:00
"config_flow": true,
"iot_class": "cloud_polling"
},
"dlib_face_detect": {
"name": "Dlib Face Detect",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"dlib_face_identify": {
"name": "Dlib Face Identify",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"dlink": {
"name": "D-Link Wi-Fi Smart Plugs",
2023-01-11 00:10:56 +00:00
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"dlna": {
"name": "DLNA",
"integrations": {
"dlna_dmr": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "DLNA Digital Media Renderer"
},
"dlna_dms": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "DLNA Digital Media Server"
}
}
},
"dnsip": {
"name": "DNS IP",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"dominos": {
"name": "Dominos Pizza",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"doods": {
"name": "DOODS - Dedicated Open Object Detection Service",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"doorbird": {
"name": "DoorBird",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"dooya": {
"name": "Dooya",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"dormakaba_dkey": {
"name": "Dormakaba dKey",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"dovado": {
"name": "Dovado",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"downloader": {
"name": "Downloader",
"integration_type": "hub",
Add Downloader config flow, including tests (#98722) * Adding base line, including tests * Adding validatge input and expanding tests * Updating manifest * Minor patch * Revert minor patch, wrong nesting * Adding proper translations * Including abort message * Update homeassistant/components/downloader/config_flow.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Rename exception class * Refactor import * Update strings * Apply suggestions from code review * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Update homeassistant/components/downloader/__init__.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * Reverting back filename and fix typing * Reverting back mutex/lock * Upgrade version * Adding typing * Removing coroutine * Removing unload entry (for now) * Removing comment * Change type * Putting download back in setup_entry * Revert back code --------- Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-03-18 15:16:24 +00:00
"config_flow": true
},
"dremel_3d_printer": {
"name": "Dremel 3D Printer",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
Add DROP integration (#104319) * Add DROP integration * Remove all but one platform for first PR * Simplify initialization of hass.data[] structure * Remove unnecessary mnemonic 'DROP_' prefix from DOMAIN constants * Remove unnecessary whitespace * Clarify configuration 'confirm' step description * Remove unnecessary whitespace * Use device class where applicable * Remove unnecessary constructor and change its elements to class variables * Change base entity inheritance to CoordinatorEntity * Make sensor definitions more concise * Rename HA domain from drop to drop_connect * Remove underscores from class and function names * Remove duplicate temperature sensor * Change title capitalization * Refactor using SensorEntityDescription * Remove unnecessary intermediate dict layer * Remove generated translations file * Remove currently unused string values * Use constants in sensor definitions * Replace values with constants * Move translation keys * Remove unnecessary unique ID and config entry references * Clean up DROPEntity initialization * Clean up sensors * Rename vars and functions according to style * Remove redundant self references * Clean up DROPSensor initializer * Add missing state classes * Simplify detection of configured devices * Change entity identifiers to create device linkage * Move device_info to coordinator * Remove unnecessary properties * Correct hub device IDs * Remove redundant attribute * Replace optional UID with assert * Remove redundant attribute * Correct coordinator initialization * Fix mypy error * Move API functionality to 3rd party library * Abstract device to sensor map into a dict * Unsubscribe MQTT on unload * Move entity device information * Make type checking for mypy conditional * Bump dropmqttapi to 1.0.1 * Freeze dataclass to match parent class * Fix race condition in MQTT unsubscribe setup * Ensure unit tests begin with invalid MQTT state * Change unit tests to reflect device firmware * Move MQTT subscription out of the coordinator * Tidy up initializer * Move entirety of MQTT subscription out of the coordinator * Make drop_api a class property * Remove unnecessary type checks * Simplify some unit test asserts * Remove argument matching default * Add entity category to battery and cartridge life sensors
2023-12-22 13:24:08 +00:00
"drop_connect": {
"name": "DROP",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"dsmr": {
"name": "DSMR Slimme Meter",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"dsmr_reader": {
"name": "DSMR Reader",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"dte_energy_bridge": {
"name": "DTE Energy Bridge",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"dublin_bus_transport": {
"name": "Dublin Bus",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"duckdns": {
"name": "Duck DNS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"dunehd": {
"name": "Dune HD",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"duotecno": {
"name": "Duotecno",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"duquesne_light": {
"name": "Duquesne Light",
"integration_type": "virtual",
"supported_by": "opower"
},
"dwd_weather_warnings": {
"name": "Deutscher Wetterdienst (DWD) Weather Warnings",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"dweet": {
"name": "dweet.io",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"eafm": {
"name": "Environment Agency Flood Gauges",
"integration_type": "hub",
2023-02-03 18:56:17 +00:00
"config_flow": true,
"iot_class": "cloud_polling"
},
"eastron": {
"name": "Eastron",
"integration_type": "virtual",
"supported_by": "homewizard"
},
2023-02-03 18:56:17 +00:00
"easyenergy": {
"name": "easyEnergy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ebox": {
"name": "EBox",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"ebusd": {
"name": "ebusd",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ecoal_boiler": {
"name": "eSterownik eCoal.pl Boiler",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ecobee": {
"name": "ecobee",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
Add ecoforest integration (#100647) * Add ecoforest integration * fix file title * remove host default from schema, hints will be given in the documentation * moved input validation to async_step_user * ensure we can receive device data while doing entry setup * remove unecessary check before unique id is set * added shorter syntax for async create entry Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * use variable to set unique id Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Use _attr_has_entity_name from base entity Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * remove unecessary comments in coordinator * use shorthand for device information * remove empty objects from manifest * remove unecessary flag Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * use _async_abort_entries_match to ensure device is not duplicated * remove unecessary host attr * fixed coordinator host attr to be used by entities to identify device * remove unecessary assert * use default device class temperature trasnlation key * reuse base entity description * use device serial number as identifier * remove unused code * Improve logging message Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Remove unused errors Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Raise a generic update failed Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * use coordinator directly Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * No need to check for serial number Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * rename variable Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * use renamed variable Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * improve assertion Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * use serial number in entity unique id Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * raise config entry not ready on setup when error in connection * improve test readability * Improve python syntax Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * abort when device already configured with same serial number * improve tests * fix test name * use coordinator data Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * improve asserts Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * fix ci * improve error handling --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-09-21 13:18:55 +00:00
"ecoforest": {
"name": "Ecoforest",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"econet": {
"name": "Rheem EcoNet Products",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"ecovacs": {
"name": "Ecovacs",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"ecowitt": {
"name": "Ecowitt",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"eddystone_temperature": {
"name": "Eddystone",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"edimax": {
"name": "Edimax",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"edl21": {
"name": "EDL21",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"efergy": {
"name": "Efergy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"egardia": {
"name": "Egardia",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"electrasmart": {
"name": "Electra Smart",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"electric_kiwi": {
"name": "Electric Kiwi",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"elgato": {
2022-10-04 13:24:55 +00:00
"name": "Elgato",
"integrations": {
"avea": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Elgato Avea"
},
"elgato": {
"integration_type": "device",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Elgato Light"
}
}
},
"eliqonline": {
"name": "Eliqonline",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"elkm1": {
"name": "Elk-M1 Control",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"elmax": {
"name": "Elmax",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"elv": {
"name": "ELV PCA",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
2024-01-31 13:47:37 +00:00
"elvia": {
"name": "Elvia",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"emby": {
"name": "Emby",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"emoncms": {
2022-10-04 13:24:55 +00:00
"name": "emoncms",
"integrations": {
"emoncms": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Emoncms"
},
"emoncms_history": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Emoncms History"
}
}
},
"emonitor": {
"name": "SiteSage Emonitor",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"emulated_hue": {
"name": "Emulated Hue",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"emulated_kasa": {
"name": "Emulated Kasa",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"emulated_roku": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"energenie_power_sockets": {
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"energie_vanons": {
"name": "Energie VanOns",
"integration_type": "virtual",
"supported_by": "energyzero"
},
2023-01-03 21:28:16 +00:00
"energyzero": {
"name": "EnergyZero",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"enigma2": {
"name": "Enigma2 (OpenWebif)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"enmax": {
"name": "Enmax Energy",
"integration_type": "virtual",
"supported_by": "opower"
},
"enocean": {
"name": "EnOcean",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"enphase_envoy": {
"name": "Enphase Envoy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"entur_public_transport": {
"name": "Entur",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"environment_canada": {
"name": "Environment Canada",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"envisalink": {
"name": "Envisalink",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"ephember": {
"name": "EPH Controls",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"epion": {
"name": "Epion",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"epson": {
2022-10-04 13:24:55 +00:00
"name": "Epson",
"integrations": {
"epson": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Epson"
},
"epsonworkforce": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Epson Workforce"
}
}
},
2022-10-04 13:24:55 +00:00
"eq3": {
"name": "eQ-3",
"integrations": {
"maxcube": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "eQ-3 MAX!"
},
"eq3btsmart": {
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling",
"name": "eQ-3 Bluetooth Smart Thermostats"
2022-10-04 13:24:55 +00:00
}
}
},
"escea": {
"name": "Escea",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"esera_onewire": {
"name": "ESERA 1-Wire",
"integration_type": "virtual",
"supported_by": "onewire"
},
"esphome": {
"name": "ESPHome",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"etherscan": {
"name": "Etherscan",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"eufy": {
"name": "eufy",
"integrations": {
"eufy": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
"name": "EufyHome"
},
"eufylife_ble": {
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push",
"name": "EufyLife"
}
}
},
"evergy": {
"name": "Evergy",
"integration_type": "virtual",
"supported_by": "opower"
},
"everlights": {
"name": "EverLights",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"evil_genius_labs": {
"name": "Evil Genius Labs",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"ezviz": {
"name": "EZVIZ",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"faa_delays": {
"name": "FAA Delays",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"facebook": {
"name": "Facebook Messenger",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"fail2ban": {
"name": "Fail2Ban",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"fastdotcom": {
"name": "Fast.com",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"feedreader": {
"name": "Feedreader",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"ffmpeg": {
2022-10-04 13:24:55 +00:00
"name": "FFmpeg",
"integrations": {
"ffmpeg": {
"integration_type": "hub",
"config_flow": false,
2022-10-04 13:24:55 +00:00
"name": "FFmpeg"
},
"ffmpeg_motion": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated",
2022-10-04 13:24:55 +00:00
"name": "FFmpeg Motion"
},
"ffmpeg_noise": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated",
2022-10-04 13:24:55 +00:00
"name": "FFmpeg Noise"
}
}
},
"fibaro": {
"name": "Fibaro",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"fido": {
"name": "Fido",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"file": {
"name": "File",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"filesize": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"filter": {
"name": "Filter",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"fints": {
"name": "FinTS",
"integration_type": "service",
"config_flow": false,
"iot_class": "cloud_polling"
},
"fireservicerota": {
"name": "FireServiceRota",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"firmata": {
"name": "Firmata",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"fitbit": {
"name": "Fitbit",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"fivem": {
"name": "FiveM",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"fixer": {
"name": "Fixer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"fjaraskupan": {
"name": "Fj\u00e4r\u00e5skupan",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"fleetgo": {
"name": "FleetGO",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"flexit": {
"name": "Flexit",
"integrations": {
"flexit": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
"name": "Flexit"
},
"flexit_bacnet": {
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling",
"name": "Flexit Nordic (BACnet)"
}
}
},
"flexom": {
"name": "Bouygues Flexom",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"flic": {
"name": "Flic",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"flick_electric": {
"name": "Flick Electric",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"flipr": {
"name": "Flipr",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"flo": {
"name": "Flo",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"flock": {
"name": "Flock",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"flume": {
"name": "Flume",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"flux": {
"name": "Flux",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"flux_led": {
"name": "Magic Home",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"folder": {
"name": "Folder",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"folder_watcher": {
"name": "Folder Watcher",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"foobot": {
"name": "Foobot",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"forecast_solar": {
"name": "Forecast.Solar",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"forked_daapd": {
"name": "OwnTone",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"fortios": {
"name": "FortiOS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"foscam": {
"name": "Foscam",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"foursquare": {
"name": "Foursquare",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"free_mobile": {
"name": "Free Mobile",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"freebox": {
"name": "Freebox",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"freedns": {
"name": "FreeDNS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"freedompro": {
"name": "Freedompro",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"fritzbox": {
2022-09-28 20:45:35 +00:00
"name": "FRITZ!Box",
"integrations": {
"fritz": {
"integration_type": "hub",
2022-09-28 20:45:35 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "AVM FRITZ!Box Tools"
},
"fritzbox": {
"integration_type": "hub",
2022-09-28 20:45:35 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "AVM FRITZ!SmartHome"
},
"fritzbox_callmonitor": {
"integration_type": "device",
2022-09-28 20:45:35 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "AVM FRITZ!Box Call Monitor"
}
}
},
"fronius": {
"name": "Fronius",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"frontier_silicon": {
"name": "Frontier Silicon",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"fujitsu_anywair": {
"name": "Fujitsu anywAIR",
"integration_type": "virtual",
"supported_by": "advantage_air"
},
"fully_kiosk": {
"name": "Fully Kiosk Browser",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"futurenow": {
"name": "P5 FutureNow",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
Add Fyta integration (#110816) * Initial commit for fyta integration * Update __init__.py Delete BinarySensor for first PR * Update __init__.py Rewind wrongful deletion of comma * Delete homeassistant/components/fyta/binary_sensor.py Delete binary_sensor for first pr of integration * Update manifest.json Updated requirement to new version of fyta_cli 0.2.1, where bug in import of modules has been resolved. * Update requirements_test_all.txt adjust to updated manifest * Update requirements_all.txt adjust to updated manifest * Update test_config_flow.py * Update config_flow.py update file to correct error with _entry attribute * Fyta integration - update initial PR based on review in initial PR #110816 (#2) * adjustments to pass test for config_flow * backport of changes in intitial PR to dev * update text_config_flow * changes based on review in initial PR #110816 * Update homeassistant/components/fyta/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/strings.json Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * Update homeassistant/components/fyta/strings.json Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * Update homeassistant/components/fyta/manifest.json Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * Adjustments based on PR-commet of Feb 19 (#3) * add test for config_flow.validate_input * update based on pr review * update based on pr review * further refinings based on PR review * Update tests/components/fyta/test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update test_config_flow.py Update tests based on PR comment * Update homeassistant/components/fyta/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * add handling and test for duplicate entry * Update homeassistant/components/fyta/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update test_config_flow.py parametrize test for exceptions * Update config_flow.py Move _async_abort_entries_match, add arguments * Update coordinator.py * Update typing in coordinator.py * Update coordinator.py update typing * Update coordinator.py corrected typo * Update coordinator.py * Update entity.py * Update sensor.py * Update icons.json * Update homeassistant/components/fyta/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update entity.py * Update test_config_flow.py * Update config_flow.py (change FlowResult to ConfigFlowResult) * Update config_flow.py * Update homeassistant/components/fyta/config_flow.py Co-authored-by: Robert Resch <robert@resch.dev> * Update homeassistant/components/fyta/config_flow.py Co-authored-by: Robert Resch <robert@resch.dev> * Update homeassistant/components/fyta/coordinator.py Co-authored-by: Robert Resch <robert@resch.dev> * Update coordinator.py * Update config_flow.py (typing FlowResult -> ConfigFlowResult) * Update config_flow.py * Aktualisieren von config_flow.py * remove coordinator entities * Update strings.json remove plant_number * Update icons.json remove plant_number * Update manifest.json Update requirement to latest fyta_cli version * Update requirements_all.txt * Update requirements_test_all.txt * Update homeassistant/components/fyta/sensor.py * Update homeassistant/components/fyta/sensor.py * Update homeassistant/components/fyta/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/fyta/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/fyta/test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/fyta/test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * move test-helpers into conftest.py, adjust import of coordinator.py --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> Co-authored-by: Robert Resch <robert@resch.dev>
2024-03-15 17:13:35 +00:00
"fyta": {
"name": "FYTA",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"garadget": {
"name": "Garadget",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"garages_amsterdam": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"gardena_bluetooth": {
"name": "Gardena Bluetooth",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"gaviota": {
"name": "Gaviota",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"gdacs": {
"name": "Global Disaster Alert and Coordination System (GDACS)",
2022-11-03 08:32:40 +00:00
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"generic": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"generic_hygrostat": {
"name": "Generic hygrostat",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"generic_thermostat": {
"name": "Generic Thermostat",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"geniushub": {
"name": "Genius Hub",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"geo_json_events": {
"name": "GeoJSON",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"geo_rss_events": {
"name": "GeoRSS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"geocaching": {
"name": "Geocaching",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"geofency": {
"name": "Geofency",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
2022-10-04 13:24:55 +00:00
"geonet": {
"name": "GeoNet",
"integrations": {
"geonetnz_quakes": {
"integration_type": "service",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "GeoNet NZ Quakes"
},
"geonetnz_volcano": {
"integration_type": "service",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "GeoNet NZ Volcano"
}
}
},
"gios": {
"name": "GIO\u015a",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"github": {
"name": "GitHub",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"gitlab_ci": {
"name": "GitLab-CI",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"gitter": {
"name": "Gitter",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"glances": {
"name": "Glances",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"globalcache": {
"name": "Global Cach\u00e9",
"integrations": {
"gc100": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Global Cach\u00e9 GC-100"
},
"itach": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state",
2022-10-04 13:24:55 +00:00
"name": "Global Cach\u00e9 iTach TCP/IP to IR"
}
}
},
"goalzero": {
"name": "Goal Zero Yeti",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"gogogate2": {
"name": "Gogogate2 and ismartgate",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"goodwe": {
"name": "GoodWe Inverter",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"google": {
"name": "Google",
"integrations": {
2022-09-28 19:43:51 +00:00
"google_assistant": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-09-28 19:43:51 +00:00
"name": "Google Assistant"
},
"google_assistant_sdk": {
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Google Assistant SDK"
},
2022-09-28 19:43:51 +00:00
"google_cloud": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-09-28 19:43:51 +00:00
"name": "Google Cloud Platform"
},
"google_domains": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-09-28 19:43:51 +00:00
"name": "Google Domains"
},
"google_generative_ai_conversation": {
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Google Generative AI Conversation"
},
"google_mail": {
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Google Mail"
},
2022-09-28 19:43:51 +00:00
"google_maps": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-09-28 19:43:51 +00:00
"name": "Google Maps"
},
"google_pubsub": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-09-28 19:43:51 +00:00
"name": "Google Pub/Sub"
},
"google_sheets": {
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Google Sheets"
2022-09-28 19:43:51 +00:00
},
"google_tasks": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Google Tasks"
},
2022-09-28 19:43:51 +00:00
"google_translate": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push",
"name": "Google Translate text-to-speech"
2022-09-28 19:43:51 +00:00
},
"google_travel_time": {
"integration_type": "hub",
2022-09-28 19:43:51 +00:00
"config_flow": true,
"iot_class": "cloud_polling"
2022-09-28 19:43:51 +00:00
},
"google_wifi": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-09-28 19:43:51 +00:00
"name": "Google Wifi"
},
"google": {
"integration_type": "hub",
2022-09-28 19:43:51 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Google Calendar"
},
"nest": {
"integration_type": "hub",
2022-09-28 19:43:51 +00:00
"config_flow": true,
"iot_class": "cloud_push",
"name": "Google Nest"
},
"cast": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "Google Cast"
},
"dialogflow": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push",
"name": "Dialogflow"
},
"youtube": {
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "YouTube"
}
}
},
"govee": {
"name": "Govee",
"integrations": {
"govee_ble": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "Govee Bluetooth"
},
"govee_light_local": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "Govee lights local"
}
}
},
"gpsd": {
"name": "GPSD",
"integration_type": "hub",
2024-01-31 17:38:14 +00:00
"config_flow": true,
"iot_class": "local_polling"
},
"gpslogger": {
"name": "GPSLogger",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"graphite": {
"name": "Graphite",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"gree": {
"name": "Gree Climate",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"greeneye_monitor": {
"name": "GreenEye Monitor (GEM)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"greenwave": {
"name": "Greenwave Reality",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"growatt_server": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"gstreamer": {
"name": "GStreamer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"gtfs": {
"name": "General Transit Feed Specification (GTFS)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"guardian": {
"name": "Elexa Guardian",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"habitica": {
"name": "Habitica",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"harman_kardon_avr": {
"name": "Harman Kardon AVR",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"hassio": {
"name": "Home Assistant Supervisor",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"havana_shade": {
"name": "Havana Shade",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"haveibeenpwned": {
"name": "HaveIBeenPwned",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"hddtemp": {
"name": "hddtemp",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"hdmi_cec": {
"name": "HDMI-CEC",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"heatmiser": {
"name": "Heatmiser",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"heiwa": {
"name": "Heiwa",
"integration_type": "virtual",
"supported_by": "gree"
},
"heltun": {
"name": "HELTUN",
"iot_standards": [
"zwave"
]
},
"here_travel_time": {
"name": "HERE Travel Time",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"hexaom": {
"name": "Hexaom Hexaconnect",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"hi_kumo": {
"name": "Hitachi Hi Kumo",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"hikvision": {
2022-10-04 13:24:55 +00:00
"name": "Hikvision",
"integrations": {
"hikvision": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "Hikvision"
},
"hikvisioncam": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Hikvision"
}
}
},
"hisense_aehw4a1": {
"name": "Hisense AEH-W4A1",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"history_stats": {
"name": "History Stats",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"hitron_coda": {
"name": "Rogers Hitron CODA",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"hive": {
"name": "Hive",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"hko": {
"name": "Hong Kong Observatory",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"hlk_sw16": {
"name": "Hi-Link HLK-SW16",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
Add Holiday integration (#103795) * Add Holiday integration * Localize holiday names * Changes based on review feedback * Add tests * Add device info * Bump holidays to 0.36 * Default to Home Assistant country setting * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update homeassistant/components/holiday/config_flow.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * black * Move time * Stop creating duplicate holiday calendars * Set default language using python-holiday * Use common translation * Set _attr_name to None to fix friendly name * Fix location * Update homeassistant/components/holiday/__init__.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update tests/components/holiday/test_init.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * cleanup * Set up the integration and test the state * Test that configuring more than one instance is rejected * Set default_language to user's language, fallback to country's default language * Improve tests * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Cleanup * Add next year so we don't run out * Update tests/components/holiday/test_init.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Cleanup * Set default language in `__init__` * Add strict typing * Change default language: HA's language `en` is `en_US` in holidays, apart from Canada * CONF_PROVINCE can be None * Fix test * Fix default_language * Refactor tests * Province can be None * Add test for translated title * Address feedback * Address feedback * Change test to use service call * Address feedback * Apply suggestions from code review Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Changes based on review feedback * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update homeassistant/components/holiday/calendar.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Add a test if next event is missing * Rebase * Set device to service * Remove not needed translation key --------- Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-12-03 15:28:53 +00:00
"holiday": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"home_connect": {
"name": "Home Connect",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"home_plus_control": {
"name": "Legrand Home+ Control",
"integration_type": "virtual",
"supported_by": "netatmo"
},
"homematic": {
2022-10-04 13:24:55 +00:00
"name": "Homematic",
"integrations": {
"homematic": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "Homematic"
},
"homematicip_cloud": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_push",
"name": "HomematicIP Cloud"
}
}
},
2023-03-28 14:37:57 +00:00
"homeseer": {
"name": "HomeSeer",
"iot_standards": [
"zwave"
]
},
"homewizard": {
"name": "HomeWizard Energy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"honeywell": {
2022-10-04 13:24:55 +00:00
"name": "Honeywell",
"integrations": {
"lyric": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Honeywell Lyric"
},
"evohome": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-10-04 13:24:55 +00:00
"name": "Honeywell Total Connect Comfort (Europe)"
},
"honeywell": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Honeywell Total Connect Comfort (US)"
}
}
},
"horizon": {
"name": "Unitymedia Horizon HD Recorder",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"hp_ilo": {
"name": "HP Integrated Lights-Out (ILO)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"html5": {
"name": "HTML5 Push Notifications",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"huawei_lte": {
"name": "Huawei LTE",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"huisbaasje": {
"name": "Huisbaasje",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"hunterdouglas_powerview": {
"name": "Hunter Douglas PowerView",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"hurrican_shutters_wholesale": {
"name": "Hurrican Shutters Wholesale",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
Add Husqvarna Automower integration (#109073) * Add Husqvarna Automower * Update homeassistant/components/husqvarna_automower/__init__.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/lawn_mower.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/lawn_mower.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * address review * add test_config_non_unique_profile * add missing const * WIP tests * tests * tests * Update homeassistant/components/husqvarna_automower/api.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/husqvarna_automower/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/husqvarna_automower/conftest.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * . * loop through test * Update homeassistant/components/husqvarna_automower/entity.py * Update homeassistant/components/husqvarna_automower/coordinator.py * Update homeassistant/components/husqvarna_automower/coordinator.py * Apply suggestions from code review * ruff --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-07 08:27:04 +00:00
"husqvarna_automower": {
"name": "Husqvarna Automower",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
Add Huum integration (#106420) * Add Huum integration * Use DeviceInfo instead of name property for huum climate * Simplify entry setup for huum climate entry * Don’t take status as attribute for huum climate init * Remove unused import * Set unique id as entity id in huum init * Remove unused import for huum climate * Use entry ID as unique ID for device entity * Remove extra newline in huum climate * Upgrade pyhuum to 0.7.4 This version no longer users Pydantic * Parameterize error huum tests * Update all requirements after pyhuum upgrade * Use Huum specific naming for ConfigFlow * Use constants for username and password in huum config flow * Use constants for temperature units * Fix typing and pylint issues * Update pyhuum to 0.7.5 * Use correct enums for data entry flow in Huum tests * Remove test for non-thrown CannotConnect in huum flow tests * Refactor failure config test to also test a successful flow after failure * Fix ruff-format issues * Move _status outside of __init__ and type it * Type temperature argument for _turn_on in huum climate * Use constants for auth in huum config flow test * Refactor validate_into into a inline call in huum config flow * Refactor current and target temperature to be able to return None values * Remove unused huum exceptions * Flip if-statment in async_step_user flow setup to simplify code * Change current and target temperature to be more future proof * Log exception instead of error * Use custom pyhuum exceptions * Add checks for duplicate entries * Use min temp if no target temp has been fetched yet when heating huum * Fix tests so that mock config entry also include username and password * Fix ruff styling issues I don’t know why it keeps doing this. I run `ruff` locally, and then it does not complain, but CI must be doing something else here. * Remove unneded setting of unique id * Update requirements * Refactor temperature setting to support settings target temparature properly
2024-01-25 11:55:55 +00:00
"huum": {
"name": "Huum",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"hvv_departures": {
"name": "HVV Departures",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"hydrawise": {
"name": "Hunter Hydrawise",
"integration_type": "hub",
Add config flow to Hydrawise (#95589) * Add config flow to Hydrawise * Raise an issue when a YAML config is detected * Add a test for YAML import * Add missing __init__.py * Update CODEOWNERS * Update requirements_test_all.txt * Add config flow data to strings.json * Hande scan_interval not being in YAML on import * Fix requirements * Update deprecation dates * Update requirements_test_all.txt * Changes from review * Update homeassistant/components/hydrawise/__init__.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Add already_configured to strings.json * Add back setup_platform functions * Apply suggestions from code review Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Add back setup_platform * Update requirements_test_all.txt * Run black on hydrawise/*.py * Add missing import of HOMEASSISTANT_DOMAIN * Use more specific errors in config flow * Add additional tests * Update config flow to use pydrawise.legacy * Re-work YAML deprecation issues * Revert some changes to binary_sensor, as requested in review * Changes requested during review * Apply suggestions from code review Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Remove unused STE_USER_DATA_SCHEMA Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update comment in setup_platform * Re-work the config flow again * Apply suggestions from code review Co-authored-by: G Johansson <goran.johansson@shiftit.se> * Update tests * Add back the _default_watering_timer attribute * Bump deprecation dates * Update requirements_test_all.txt * Update CODEOWNERS --------- Co-authored-by: G Johansson <goran.johansson@shiftit.se> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-09-23 22:03:07 +00:00
"config_flow": true,
"iot_class": "cloud_polling"
},
"hyperion": {
"name": "Hyperion",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"ialarm": {
"name": "Antifurto365 iAlarm",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"iammeter": {
"name": "IamMeter",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"iaqualink": {
"name": "Jandy iAqualink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
2022-10-04 13:24:55 +00:00
"ibm": {
"name": "IBM",
"integrations": {
"watson_iot": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "IBM Watson IoT Platform"
},
"watson_tts": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "IBM Watson TTS"
}
}
},
"idteck_prox": {
"name": "IDTECK Proximity Reader",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"ifttt": {
"name": "IFTTT",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"iglo": {
"name": "iGlo",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ign_sismologia": {
"name": "IGN Sismolog\u00eda",
"integration_type": "service",
"config_flow": false,
"iot_class": "cloud_polling"
},
"ihc": {
"name": "IHC Controller",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"ikea": {
"name": "IKEA",
"integrations": {
"symfonisk": {
"integration_type": "virtual",
"config_flow": false,
"supported_by": "sonos",
"name": "IKEA SYMFONISK"
},
"tradfri": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "IKEA TR\u00c5DFRI"
},
"idasen_desk": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "IKEA Idasen Desk"
}
}
},
"imap": {
"name": "IMAP",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"improv_ble": {
"name": "Improv via BLE",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"incomfort": {
"name": "Intergas InComfort/Intouch Lan2RF gateway",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"indianamichiganpower": {
"name": "Indiana Michigan Power",
"integration_type": "virtual",
"supported_by": "opower"
},
"influxdb": {
"name": "InfluxDB",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"inkbird": {
"name": "INKBIRD",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
2022-10-04 15:45:40 +00:00
"inovelli": {
"name": "Inovelli",
"iot_standards": [
"zigbee",
"zwave"
]
},
"inspired_shades": {
"name": "Inspired Shades",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"insteon": {
"name": "Insteon",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"intellifire": {
"name": "IntelliFire",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"intent_script": {
"name": "Intent Script",
"integration_type": "hub",
"config_flow": false
},
"intesishome": {
"name": "IntesisHome",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"ios": {
"name": "Home Assistant iOS",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"iotawatt": {
"name": "IoTaWatt",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"iperf3": {
"name": "Iperf3",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ipma": {
"name": "Instituto Portugu\u00eas do Mar e Atmosfera (IPMA)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ipp": {
"name": "Internet Printing Protocol (IPP)",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"iqvia": {
"name": "IQVIA",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"irish_rail_transport": {
"name": "Irish Rail Transport",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"islamic_prayer_times": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ismartwindow": {
"name": "iSmartWindow",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"iss": {
"name": "International Space Station (ISS)",
2022-10-24 21:19:59 +00:00
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"isy994": {
"name": "Universal Devices ISY/IoX",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"izone": {
"name": "iZone",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-10-04 15:45:40 +00:00
"jasco": {
"name": "Jasco",
"iot_standards": [
"zwave"
]
},
"jellyfin": {
"name": "Jellyfin",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling",
"single_config_entry": true
},
"jewish_calendar": {
"name": "Jewish Calendar",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"joaoapps_join": {
"name": "Joaoapps Join",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"juicenet": {
"name": "JuiceNet",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"justnimbus": {
"name": "JustNimbus",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"jvc_projector": {
"name": "JVC Projector",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"kaiterra": {
"name": "Kaiterra",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"kaleidescape": {
"name": "Kaleidescape",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"kankun": {
"name": "Kankun",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"keba": {
"name": "Keba Charging Station",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"keenetic_ndms2": {
"name": "Keenetic NDMS2 Router",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"kef": {
"name": "KEF",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"kegtron": {
"name": "Kegtron",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"kentuckypower": {
"name": "Kentucky Power",
"integration_type": "virtual",
"supported_by": "opower"
},
"keyboard": {
"name": "Keyboard",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"keyboard_remote": {
"name": "Keyboard Remote",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"keymitt_ble": {
"name": "Keymitt MicroBot Push",
"integration_type": "hub",
"config_flow": true,
"iot_class": "assumed_state"
},
"kira": {
"name": "Kira",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
2023-01-10 16:31:47 +00:00
"kitchen_sink": {
"name": "Everything but the Kitchen Sink",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"kiwi": {
"name": "KIWI",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"kmtronic": {
"name": "KMtronic",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"knx": {
"name": "KNX",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"single_config_entry": true
},
"kodi": {
"name": "Kodi",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"konnected": {
"name": "Konnected.io",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"kostal_plenticore": {
"name": "Kostal Plenticore Solar Inverter",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"kraken": {
"name": "Kraken",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"krispol": {
"name": "Krispol",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"kulersky": {
"name": "Kuler Sky",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"kwb": {
"name": "KWB Easyfire",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"lacrosse": {
"name": "LaCrosse",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"lacrosse_view": {
"name": "LaCrosse View",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"lamarzocco": {
"name": "La Marzocco",
"integration_type": "device",
"config_flow": true,
"iot_class": "cloud_polling"
},
"lametric": {
"name": "LaMetric",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"landisgyr_heat_meter": {
"name": "Landis+Gyr Heat Meter",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"lannouncer": {
"name": "LANnouncer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"lastfm": {
"name": "Last.fm",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"launch_library": {
"name": "Launch Library",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"laundrify": {
"name": "laundrify",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"lcn": {
"name": "LCN",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
2023-01-06 02:15:03 +00:00
"ld2410_ble": {
"name": "LD2410 BLE",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
2024-01-24 08:08:20 +00:00
"leaone": {
"name": "LeaOne",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"led_ble": {
"name": "LED BLE",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"legrand": {
"name": "Legrand",
"integration_type": "virtual",
"supported_by": "netatmo"
},
2022-09-29 10:28:51 +00:00
"leviton": {
"name": "Leviton",
"iot_standards": [
"zwave"
]
},
2022-10-04 13:24:55 +00:00
"lg": {
"name": "LG",
"integrations": {
"lg_netcast": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "LG Netcast"
},
"lg_soundbar": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "LG Soundbars"
},
"webostv": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "LG webOS Smart TV"
}
}
},
"lidarr": {
"name": "Lidarr",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"lifx": {
"name": "LIFX",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"lifx_cloud": {
"name": "LIFX Cloud",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"lightwave": {
"name": "Lightwave",
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state"
},
"limitlessled": {
"name": "LimitlessLED",
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state"
},
"linear_garage_door": {
"name": "Linear Garage Door",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"linksys_smart": {
"name": "Linksys Smart Wi-Fi",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"linode": {
"name": "Linode",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"linux_battery": {
"name": "Linux Battery",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"lirc": {
"name": "LIRC",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"litejet": {
"name": "LiteJet",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"litterrobot": {
"name": "Litter-Robot",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
2022-11-07 13:40:23 +00:00
"livisi": {
"name": "LIVISI Smart Home",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"llamalab_automate": {
"name": "LlamaLab Automate",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
2022-11-30 20:20:21 +00:00
"local_calendar": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"local_file": {
"name": "Local File",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"local_ip": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"local_todo": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"locative": {
"name": "Locative",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"logentries": {
"name": "Logentries",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"logi_circle": {
"name": "Logi Circle",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
2022-10-04 13:24:55 +00:00
"logitech": {
"name": "Logitech",
"integrations": {
"harmony": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Logitech Harmony Hub"
},
"ue_smart_radio": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-10-04 13:24:55 +00:00
"name": "Logitech UE Smart Radio"
},
"squeezebox": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Squeezebox (Logitech Media Server)"
}
}
},
"london_air": {
"name": "London Air",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"london_underground": {
"name": "London Underground",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"lookin": {
"name": "LOOKin",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
2023-06-28 07:42:12 +00:00
"loqed": {
"name": "LOQED Touch Smart Lock",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"luftdaten": {
"name": "Sensor.Community",
"integration_type": "device",
"config_flow": true,
"iot_class": "cloud_polling"
},
"lupusec": {
"name": "Lupus Electronics LUPUSEC",
"integration_type": "hub",
Add ConfigFlow for Lupusec (#108740) * init support for config flow for lupusec * correctly iterate over BinarySensorDeviceClass values for device class * bump lupupy to 0.3.2 * Updated device info for lupusec * revert bump lupupy for separate pr * fixed lupusec test-cases * Change setup to async_setup * remove redundant check for hass.data.setdefault * init support for config flow for lupusec * correctly iterate over BinarySensorDeviceClass values for device class * bump lupupy to 0.3.2 * Updated device info for lupusec * revert bump lupupy for separate pr * fixed lupusec test-cases * Change setup to async_setup * remove redundant check for hass.data.setdefault * resolve merge error lupupy * connection check when setting up config entry * removed unique_id and device_info for separate pr * changed name to friendly name * renamed LUPUSEC_PLATFORMS to PLATFORMS * preparation for code review * necessary changes for pr * changed config access * duplicate entry check * types added for setup_entry and test_host_connection * removed name for lupusec system * removed config entry from LupusecDevice * fixes for sensors * added else block for try * added integration warning * pass config to config_flow * fix test cases for new config flow * added error strings * changed async_create_entry invocation * added tests for exception handling * use parametrize * use parametrize for tests * recover test * test unique id * import from yaml tests * import error test cases * Update tests/components/lupusec/test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * fixed test case * removed superfluous test cases * self._async_abort_entries_match added * lib patching call * _async_abort_entries_match * patch lupupy lib instead of test connection * removed statements * test_flow_source_import_already_configured * Update homeassistant/components/lupusec/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * removed unique_id from mockentry * added __init__.py to .coveragerc --------- Co-authored-by: suaveolent <suaveolent@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 17:52:30 +00:00
"config_flow": true,
"iot_class": "local_polling"
},
"lutron": {
2022-10-04 13:24:55 +00:00
"name": "Lutron",
"integrations": {
"lutron": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Lutron"
},
"lutron_caseta": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Lutron Cas\u00e9ta"
},
"homeworks": {
"integration_type": "hub",
2024-03-04 18:09:39 +00:00
"config_flow": true,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "Lutron Homeworks"
}
}
},
"luxaflex": {
"name": "Luxaflex",
"integration_type": "virtual",
"supported_by": "hunterdouglas_powerview"
},
"lw12wifi": {
"name": "LAGUTE LW-12",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"madeco": {
"name": "Madeco",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"mailgun": {
"name": "Mailgun",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"manual": {
"name": "Manual Alarm Control Panel",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"marantz": {
"name": "Marantz",
"integration_type": "virtual",
"supported_by": "denonavr"
},
"martec": {
"name": "Martec",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"marytts": {
"name": "MaryTTS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"mastodon": {
"name": "Mastodon",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"matrix": {
"name": "Matrix",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"matter": {
"name": "Matter (BETA)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"meater": {
"name": "Meater",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"medcom_ble": {
"name": "Medcom Bluetooth",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"media_extractor": {
"name": "Media Extractor",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"mediaroom": {
"name": "Mediaroom",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"melcloud": {
"name": "MELCloud",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"melissa": {
"name": "Melissa",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"melnor": {
2022-10-04 13:24:55 +00:00
"name": "Melnor",
"integrations": {
"melnor": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Melnor Bluetooth"
},
"raincloud": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-10-04 13:24:55 +00:00
"name": "Melnor RainCloud"
}
}
},
"meraki": {
"name": "Meraki",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"message_bird": {
"name": "MessageBird",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"met": {
"name": "Meteorologisk institutt (Met.no)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"met_eireann": {
"name": "Met \u00c9ireann",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"meteo_france": {
"name": "M\u00e9t\u00e9o-France",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"meteoalarm": {
"name": "MeteoAlarm",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"meteoclimatic": {
"name": "Meteoclimatic",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"metoffice": {
"name": "Met Office",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"mfi": {
"name": "Ubiquiti mFi mPort",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
Add microBees integration (#99573) * Create a new homeassistan integration for microBees * black --fast homeassistant tests * Switch platform * rename folder * rename folder * Update owners * aiohttp removed in favor of hass * Update config_flow.py * Update __init__.py * Update const.py * Update manifest.json * Update string.json * Update servicesMicrobees.py * Update switch.py * Update __init__.py * Update it.json * Create a new homeassistan integration for microBees * black --fast homeassistant tests * Switch platform * rename folder * rename folder * Update owners * aiohttp removed in favor of hass * Update config_flow.py * Update __init__.py * Update const.py * Update manifest.json * Update string.json * Update servicesMicrobees.py * Update switch.py * Update __init__.py * Update it.json * fixes review * fixes review * fixes review * pyproject.toml * Update package_constraints.txt * fixes review * bug fixes * bug fixes * delete microbees connector * add other productID in switch * added coordinator and enanchments * added coordinator and enanchments * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * fixes from suggestions * add test * add test * add test * add test * requested commit * requested commit * requested commit * requested commit * reverting .strict-typing and added microbees to .coveragerc * remove log * remove log * remove log * remove log * add test for microbeesExeption and Exeption * add test for microbeesExeption and Exeption * add test for microbeesException and Exception * add test for microbeesException and Exception * add test for microbeesException and Exception --------- Co-authored-by: FedDam <noceracity@gmail.com> Co-authored-by: Federico D'Amico <48856240+FedDam@users.noreply.github.com>
2024-02-19 14:12:03 +00:00
"microbees": {
"name": "microBees",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"microsoft": {
2022-10-04 13:24:55 +00:00
"name": "Microsoft",
"integrations": {
"azure_devops": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Azure DevOps"
},
"azure_event_hub": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_push",
"name": "Azure Event Hub"
},
"azure_service_bus": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Azure Service Bus"
},
"microsoft_face_detect": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Microsoft Face Detect"
},
"microsoft_face_identify": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Microsoft Face Identify"
},
"microsoft_face": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Microsoft Face"
},
"microsoft": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Microsoft Text-to-Speech (TTS)"
},
"msteams": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Microsoft Teams"
},
"xbox": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Xbox"
}
}
},
"mijndomein_energie": {
"name": "Mijndomein Energie",
"integration_type": "virtual",
"supported_by": "energyzero"
},
"mikrotik": {
"name": "Mikrotik",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"mill": {
"name": "Mill",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"minecraft_server": {
"name": "Minecraft Server",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"minio": {
"name": "Minio",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"mjpeg": {
"name": "MJPEG IP Camera",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"moat": {
"name": "Moat",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"mobile_app": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"mochad": {
"name": "Mochad",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"modbus": {
"name": "Modbus",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"modem_callerid": {
"name": "Phone Modem",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"modern_forms": {
"name": "Modern Forms",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"moehlenhoff_alpha2": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"mold_indicator": {
"name": "Mold Indicator",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"monessen": {
"name": "Monessen",
"integration_type": "virtual",
"supported_by": "intellifire"
},
"monoprice": {
"name": "Monoprice 6-Zone Amplifier",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"moon": {
"integration_type": "service",
"config_flow": true,
"iot_class": "calculated",
"single_config_entry": true
},
"mopeka": {
"name": "Mopeka",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
2024-03-27 07:02:25 +00:00
"motionblinds": {
"name": "Motionblinds",
2024-03-27 07:02:25 +00:00
"integrations": {
"motion_blinds": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "Motionblinds"
},
"motionblinds_ble": {
"integration_type": "device",
"config_flow": true,
"iot_class": "assumed_state",
"name": "Motionblinds BLE"
}
}
Add Motionblinds BLE integration (#109497) * initial fork * intial tests * Initial test coverage * extra coverage * complete config flow tests * fix generated * Update CODEOWNERS * Move logic to PyPi library and update to pass config_flow test and pre-commit * Remove Button, Select and Sensor platform for initial PR * Update manifest.json * Change info logs to debug in cover * Use _abort_if_unique_id_configured instead of custom loop checking existing entries * Change platforms list to PLATFORMS global Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com> * Remove VERSION from ConfigFlow Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com> * Replace all info logs by debug * Use instance attributes in ConfigFlow Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com> * Add return type and docstring to init in ConfigFlow * Add recovery to tests containing errors * Make NoBluetoothAdapter and NoDevicesFound abort instead of show error * Change info logs to debug * Add and change integration type from hub to device * Use CONF_ADDRESS from homeassistant.const * Move cover attributes initialization out of constructor * Change CONF_ADDRESS in tests from const to homeassistant.const * Remove unused part of tests * Change 'not motion_device' to 'motion_device is None' * Change _attr_connection_type to _connection_type * Add connections to DeviceInfo * Add model to DeviceInfo and change MotionBlindType values * Remove identifiers from DeviceInfo * Move constants from const to library * Move calibration and running to library, re-add all platforms * Remove platforms from init * Remove button platform * Remove select platform * Remove sensor platform * Bump motionblindsble to 0.0.4 * Remove closed, opening and closing attribute default values Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com> * Remove CONFIG_SCHEMA from init Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com> * Remove unused platform attributes and icons * Re-add _attr_is_closed to GenericBlind to fix error * Use entry.async_create_background_task for library instead of entry.async_create_task * Move updating of position on disconnect to library * Remove type hints, keep for _attr_is_closed * Use DISPLAY_NAME constant from library for display name * Add TYPE_CHECKING condition to assert in config_flow * Re-add CONFIG_SCHEMA to __init__ to pass hassfest * Change FlowResult type to ConfigFlowResult * Fix import in tests * Fix ruff import * Fix tests by using value of enum * Use lowercase name of MotionBlindType enum for data schema selector and translation * Fix using name instead of value for MotionBlindType * Improve position None handling Co-authored-by: starkillerOG <starkiller.og@gmail.com> * Improve tilt None handling Co-authored-by: starkillerOG <starkiller.og@gmail.com> * Change BLIND_TO_ENTITY_TYPE name * Set entity name of cover to None and use DeviceInfo name * Add base entity * Move async_update to base entity * Move unique ID with suffix to base class * Add entity.py to .coveragerc * Remove extra state attribute connection type * Remove separate line hass.data.setdefault(DOMAIN, {}) * Remove use of field for key and translation_key in MotionCoverEntityDescription * Remove entity translation with extra state_attributes from strings.json * Use super().__init__(device, entry) Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Change if block in async_update_running * Use if blocks in async_update_position * Add additional scanner check before show_form * Remove default value of device_class in MotionCoverEntityDescription * Fix entry.data[CONF_BLIND_TYPE] uppercase * Fix device info model name * Bump motionblindsble to 0.0.5 * Fix tests * Move entity_description to MotionblindsBLEEntity * Change double roller blind name * Bump motionblindsble to 0.0.6 * Fix ruff * Use status_query for async_update * Bump motionblindsble to 0.0.7 * Change bluetooth local name * Set kw_only=True for dataclass * Change name of GenericBlind * Change scanner_count conditional * Wrap async_register_callback in entry.async_on_unload * Bump motionblindsble to 0.0.8 * Use set_create_task_factory and set_call_later_factory * Update bluetooth.py generated * Simplify COVER_TYPES dictionary * Move registering callbacks to async_added_to_hass * Remove check for ATTR_POSITION and ATTR_TILT_POSITION in kwargs * Add naming consistency for device and entry * Use if block instead of ternary for _attr_unique_id * Improve errors ternary in config_flow * Use set instead of list for running_type * Improve errors ternary in config_flow * Remove init from MotionblindsBLECoverEntity and move debug log to async_added_to_hass * Update debug log create cover * Fix ruff * Use identity check instead of equals * Use identity check instead of equals * Change MotionblindsBLECoverEntityDescription name * Change debug log text * Remove ATTR_CONNECTION from const * Add types for variables in async_setup_entry * Add types for variables in async_setup_entry * Change PositionBlind class name to PositionCover etc * Improve docstrings * Improve docstrings --------- Co-authored-by: starkillerOG <starkiller.og@gmail.com> Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-03-26 08:52:04 +00:00
},
"motioneye": {
"name": "motionEye",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
Add integration for Vogel's MotionMount (#103498) * Skeleton for Vogel's MotionMount support. * Generated updates. * Add validation of the discovered information. * Add manual configuration * Use a mac address as a unique id * Add tests for config_flow * Add a 'turn' sensor entity. * Add all needed sensors. * Add number and select entity for control of MotionMount * Update based on development checklist * Preset selector now updates when a preset is chosen * Fix adding presets selector to device * Remove irrelevant TODO * Bump python-MotionMount requirement * Invert direction of turn slider * Prepare for PR * Make sure entities have correct values when created * Use device's mac address as unique id for entities. * Fix missing files in .coveragerc * Remove typing ignore from device library. Improved typing also gave rise to the need to improve the callback mechanism * Improve typing * Convert property to shorthand form * Remove unneeded CONF_NAME in ConfigEntry * Add small comment * Refresh coordinator on notification from MotionMount * Use translation for entity * Bump python-MotionMount * Raise `ConfigEntryNotReady` when connect fails * Use local variable * Improve exception handling * Reduce duplicate code * Make better use of constants * Remove unneeded callback * Remove other occurrence of unneeded callback * Improve removal of suffix * Catch 'getaddrinfo' exception * Add config flow tests for invalid hostname * Abort if device with same hostname is already configured * Make sure we connect to a device with the same unique id as configured * Convert function names to snake_case * Remove unneeded commented-out code * Use tuple * Make us of config_entry id when mac is missing * Prevent update of entities when nothing changed * Don't store data in `hass.data` until we know we will proceed * Remove coordinator * Handle situation where mac is EMPTY_MAC * Disable polling * Fix failing hassfest * Avoid calling unique-id-less discovery handler for situations where we've an unique id
2023-12-22 11:04:58 +00:00
"motionmount": {
"name": "Vogel's MotionMount",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"mpd": {
"name": "Music Player Daemon (MPD)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"mqtt": {
2022-10-04 13:24:55 +00:00
"name": "MQTT",
"integrations": {
"manual_mqtt": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "Manual MQTT Alarm Control Panel"
},
"mqtt": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "MQTT"
},
"mqtt_eventstream": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "MQTT Eventstream"
},
"mqtt_json": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "MQTT JSON"
},
"mqtt_room": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "MQTT Room Presence"
},
"mqtt_statestream": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "MQTT Statestream"
}
}
},
"mullvad": {
"name": "Mullvad VPN",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"single_config_entry": true
},
"mutesync": {
"name": "mutesync",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"mvglive": {
"name": "MVG",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"mycroft": {
"name": "Mycroft",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"mysensors": {
"name": "MySensors",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"mystrom": {
"name": "myStrom",
"integration_type": "hub",
Add config flow to mystrom (#74719) * rebase * fixed review comments * fix test * Update tests * increase test coverage * implement some review comments * Enhance device check for old FWs and add tests * Reworked exception handling * small code optimizations * fix test * Increase test coverage * Update __init__.py changed from hass.config_entries.async_setup_platforms(entry, PLATFORMS) to await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) * Update __init__.py remove spaces * Bump python-mystrom to 2.2.0 * Migrate to get_device_info from python-mystrom * Migrate to get_device_info from python-mystrom * Update __init__.py * update requirements_all.txt * update config_flow * fix tests * Update homeassistant/components/mystrom/__init__.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Implemented review changes * increase test coverage * Implemented user defined title * implemented user defined title * Additional review comments * fix test * fix linter * fix linter * Update homeassistant/components/mystrom/models.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * fix review comments * fix missing import * simplify * Update homeassistant/components/mystrom/__init__.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/mystrom/__init__.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/mystrom/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/mystrom/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/mystrom/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_init.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_init.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_init.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_init.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/mystrom/light.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/mystrom/switch.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * fix review comments * fix review comments * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * fix review comment * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/mystrom/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> --------- Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2023-06-06 12:16:27 +00:00
"config_flow": true,
"iot_class": "local_polling"
},
"mythicbeastsdns": {
"name": "Mythic Beasts DNS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"myuplink": {
"name": "myUplink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nad": {
"name": "NAD",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"nam": {
"name": "Nettigo Air Monitor",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"namecheapdns": {
"name": "Namecheap FreeDNS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"nanoleaf": {
"name": "Nanoleaf",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"neato": {
"name": "Neato Botvac",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nederlandse_spoorwegen": {
"name": "Nederlandse Spoorwegen (NS)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"ness_alarm": {
"name": "Ness Alarm",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"netatmo": {
"name": "Netatmo",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"netdata": {
"name": "Netdata",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"netgear": {
2022-10-04 13:24:55 +00:00
"name": "NETGEAR",
"integrations": {
"netgear": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "NETGEAR"
},
"netgear_lte": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "NETGEAR LTE"
}
}
},
"netio": {
"name": "Netio",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"neurio_energy": {
"name": "Neurio energy",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"nexia": {
"name": "Nexia/American Standard/Trane",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nexity": {
"name": "Nexity Eug\u00e9nie",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"nextbus": {
"integration_type": "hub",
2023-09-19 15:10:29 +00:00
"config_flow": true,
2023-04-29 19:41:35 +00:00
"iot_class": "cloud_polling"
},
"nextcloud": {
"name": "Nextcloud",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nextdns": {
"name": "NextDNS",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nfandroidtv": {
"name": "Notifications for Android TV / Fire TV",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_push"
},
"nibe_heatpump": {
"name": "Nibe Heat Pump",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"nightscout": {
"name": "Nightscout",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"niko_home_control": {
"name": "Niko Home Control",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"nilu": {
"name": "Norwegian Institute for Air Research (NILU)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"nina": {
"name": "NINA",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"single_config_entry": true
},
"nissan_leaf": {
"name": "Nissan Leaf",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"nmap_tracker": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"nmbs": {
"name": "NMBS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"no_ip": {
"name": "No-IP.com",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"noaa_tides": {
"name": "NOAA Tides",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"nobo_hub": {
"name": "Nob\u00f8 Ecohub",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"norway_air": {
"name": "Om Luftkvalitet i Norge (Norway Air)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"notify_events": {
"name": "Notify.Events",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"notion": {
"name": "Notion",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nsw_fuel_station": {
"name": "NSW Fuel Station Price",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"nsw_rural_fire_service_feed": {
"name": "NSW Rural Fire Service Incidents",
"integration_type": "service",
"config_flow": false,
"iot_class": "cloud_polling"
},
"nuheat": {
"name": "NuHeat",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nuki": {
"name": "Nuki",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"numato": {
"name": "Numato USB GPIO Expander",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"nut": {
"name": "Network UPS Tools (NUT)",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"nutrichef": {
"name": "Nutrichef",
"integration_type": "virtual",
"supported_by": "inkbird"
},
"nws": {
"name": "National Weather Service (NWS)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"nx584": {
"name": "NX584",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"nzbget": {
"name": "NZBGet",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"oasa_telematics": {
"name": "OASA Telematics",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"obihai": {
"name": "Obihai",
"integration_type": "hub",
Add Config Flow to Obihai (#88627) * Obihai: Config Flow Only * Remove reboot service * Update .coveragerc Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * PR Feedback * Use Issue Registry * Add config_flow tests * Another pass with pre-commit * Resolve cyclical import and move sensorClasses to sensor * Update homeassistant/components/obihai/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/obihai/sensor.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/obihai/sensor.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/obihai/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Another round of feedback * More PR feedback * Offline testing, already_configured is required * Update homeassistant/components/obihai/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/obihai/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/obihai/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Cleanup * Update homeassistant/components/obihai/__init__.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * PR feedback * Backout today's changes: Fix mypy error * Update tests/components/obihai/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/obihai/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/obihai/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update tests/components/obihai/test_config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Don't plan ahead * PR feedback * Update homeassistant/components/obihai/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Cleanup strings --------- Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2023-02-27 16:22:15 +00:00
"config_flow": true,
"iot_class": "local_polling"
},
"octoprint": {
"name": "OctoPrint",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"oem": {
"name": "OpenEnergyMonitor WiFi Thermostat",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ohmconnect": {
"name": "OhmConnect",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"ollama": {
"name": "Ollama",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"ombi": {
"name": "Ombi",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"omnilogic": {
"name": "Hayward Omnilogic",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"oncue": {
"name": "Oncue by Kohler",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ondilo_ico": {
"name": "Ondilo ICO",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"onewire": {
"name": "1-Wire",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"onkyo": {
"name": "Onkyo",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"onvif": {
"name": "ONVIF",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"open_meteo": {
"name": "Open-Meteo",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"openai_conversation": {
"name": "OpenAI Conversation",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"openalpr_cloud": {
"name": "OpenALPR Cloud",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"openerz": {
"name": "Open ERZ",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"openevse": {
"name": "OpenEVSE",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"openexchangerates": {
"name": "Open Exchange Rates",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"opengarage": {
"name": "OpenGarage",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"openhardwaremonitor": {
"name": "Open Hardware Monitor",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"openhome": {
"name": "Linn / OpenHome",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"opensensemap": {
"name": "openSenseMap",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"opensky": {
"name": "OpenSky Network",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"opentherm_gw": {
"name": "OpenTherm Gateway",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"openuv": {
"name": "OpenUV",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"openweathermap": {
"name": "OpenWeatherMap",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
2022-10-04 13:24:55 +00:00
"openwrt": {
"name": "OpenWrt",
"integrations": {
"luci": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "OpenWrt (luci)"
},
"ubus": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "OpenWrt (ubus)"
}
}
},
"opnsense": {
"name": "OPNSense",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"opower": {
"name": "Opower",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"opple": {
"name": "Opple",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"oralb": {
"name": "Oral-B",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"oru": {
"name": "Orange and Rockland Utility (ORU)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"oru_opower": {
"name": "Orange and Rockland Utilities (ORU) Opower",
"integration_type": "virtual",
"supported_by": "opower"
},
"orvibo": {
"name": "Orvibo",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"osoenergy": {
"name": "OSO Energy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"osramlightify": {
"name": "Osramlightify",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"otbr": {
"name": "Open Thread Border Router",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"otp": {
"name": "One-Time Password (OTP)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ourgroceries": {
"name": "OurGroceries",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"overkiz": {
"name": "Overkiz",
"integration_type": "hub",
"config_flow": true,
Add local API support to Overkiz integration (Somfy TaHoma Developer Mode) (#71644) * Add initial config flow implementation * Add initial config flow implementation * Add todos * Bugfixes * Add first zeroconf code * Fixes for new firmware * Bugfixes for local integration * Delete local token * Fix diagnostics * Update translations and improve code * Update translations and improve code * Add local integration updates * Add local integration updates * Small tweaks * Add comments * Bugfix * Small code improvements * Small code improvements * Small code improvements * Small code improvements * Small code improvements * Small code improvements * Bugfixes * Small code improvements * Small code improvements * Change Config Flow (breaking change) * Remove token when integration is unloaded * Remove print * Simplify * Bugfixes * Improve configflow * Clean up unnecessary things * Catch nosuchtoken exception * Add migration for Config Flow * Add version 2 migration * Revert change in Config Flow * Fix api type * Update strings * Improve migrate entry * Implement changes * add more comments * Extend diagnostics * Ruff fixes * Clean up code * Bugfixes * Set gateway id * Start writing tests * Add first local test * Code coverage to 64% * Fixes * Remove local token on remove entry * Add debug logging + change manifest * Add developer mode check * Fix not_such_token issue * Small text changes * Bugfix * Fix tests * Address feedback * DRY * Test coverage to 77% * Coverage to 78% * Remove token removal by UUID * Add better retry methods * Clean up * Remove old data * 87% coverage * 90% code coverage * 100% code coverage * Use patch.multiple * Improve tests * Apply pre-commit after rebase * Fix breaking changes in ZeroconfServiceInfo * Add verify_ssl * Fix test import * Fix tests * Catch SSL verify failed * Revert hub to server rename * Move Config Flow version back to 1 * Add diagnostics tests * Fix tests * Fix strings * Implement feedback * Add debug logging for local connection errors * Simplify Config Flow and fix tests * Simplify Config Flow * Fix verify_ssl * Fix rebase mistake * Address feedback * Apply suggestions from code review * Update tests/components/overkiz/test_config_flow.py --------- Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-11-22 15:53:17 +00:00
"iot_class": "local_polling"
},
"ovo_energy": {
"name": "OVO Energy",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"owntracks": {
"name": "OwnTracks",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"p1_monitor": {
"name": "P1 Monitor",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"panasonic": {
"name": "Panasonic",
"integrations": {
"panasonic_bluray": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Panasonic Blu-Ray Player"
},
"panasonic_viera": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Panasonic Viera"
}
}
},
"pandora": {
"name": "Pandora",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"panel_custom": {
"name": "Custom Panel",
"integration_type": "hub",
"config_flow": false
},
"panel_iframe": {
"name": "iframe Panel",
"integration_type": "hub",
"config_flow": false
},
"pcs_lighting": {
"name": "PCS Lighting",
"integration_type": "virtual",
"supported_by": "upb"
},
"peco": {
"name": "PECO Outage Counter",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"peco_opower": {
"name": "PECO Energy Company (PECO)",
"integration_type": "virtual",
"supported_by": "opower"
},
2023-07-26 07:12:39 +00:00
"pegel_online": {
"name": "PEGELONLINE",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"pencom": {
"name": "Pencom",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"pepco": {
"name": "Potomac Electric Power Company (Pepco)",
"integration_type": "virtual",
"supported_by": "opower"
},
"permobil": {
"name": "MyPermobil",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"pge": {
"name": "Pacific Gas & Electric (PG&E)",
"integration_type": "virtual",
"supported_by": "opower"
},
2022-10-04 13:24:55 +00:00
"philips": {
"name": "Philips",
"integrations": {
"dynalite": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Philips Dynalite"
},
"hue": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Philips Hue"
},
"philips_js": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Philips TV"
}
}
},
"pi_hole": {
"name": "Pi-hole",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"picnic": {
"name": "Picnic",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"picotts": {
"name": "Pico TTS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"pilight": {
"name": "Pilight",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"ping": {
"name": "Ping (ICMP)",
"integration_type": "hub",
2023-11-17 19:30:30 +00:00
"config_flow": true,
"iot_class": "local_polling"
},
"pioneer": {
"name": "Pioneer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"piper": {
"name": "Piper",
"integration_type": "virtual",
"supported_by": "wyoming"
},
"pjlink": {
"name": "PJLink",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"plaato": {
"name": "Plaato",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"plant": {
"integration_type": "hub",
"config_flow": false
},
"plex": {
"name": "Plex Media Server",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"plugwise": {
"name": "Plugwise",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"plum_lightpad": {
"name": "Plum Lightpad",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"pocketcasts": {
"name": "Pocket Casts",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"point": {
"name": "Minut Point",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"poolsense": {
"name": "PoolSense",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"portlandgeneral": {
"name": "Portland General Electric (PGE)",
"integration_type": "virtual",
"supported_by": "opower"
},
"private_ble_device": {
"name": "Private BLE Device",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
2022-10-04 13:24:55 +00:00
"profiler": {
"name": "Profiler",
"integration_type": "hub",
"config_flow": true
},
"progettihwsw": {
"name": "ProgettiHWSW Automation",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"proliphix": {
"name": "Proliphix",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"prometheus": {
"name": "Prometheus",
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state"
},
"prosegur": {
"name": "Prosegur Alarm",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"prowl": {
"name": "Prowl",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"proximity": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "calculated"
},
"proxmoxve": {
"name": "Proxmox VE",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"proxy": {
"name": "Camera Proxy",
"integration_type": "hub",
"config_flow": false
},
"prusalink": {
"name": "PrusaLink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"pse": {
"name": "Puget Sound Energy (PSE)",
"integration_type": "virtual",
"supported_by": "opower"
},
"psoklahoma": {
"name": "Public Service Company of Oklahoma (PSO)",
"integration_type": "virtual",
"supported_by": "opower"
},
"pulseaudio_loopback": {
"name": "PulseAudio Loopback",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"pure_energie": {
"name": "Pure Energie",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-12-13 03:32:11 +00:00
"purpleair": {
"name": "PurpleAir",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"push": {
"name": "Push",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"pushbullet": {
"name": "Pushbullet",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"pushover": {
"name": "Pushover",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"pushsafer": {
"name": "Pushsafer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"pvoutput": {
"name": "PVOutput",
"integration_type": "device",
"config_flow": true,
"iot_class": "cloud_polling"
},
"pvpc_hourly_pricing": {
"name": "Spain electricity hourly pricing (PVPC)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"pyload": {
"name": "pyLoad",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"python_script": {
"name": "Python Scripts",
"integration_type": "hub",
"config_flow": false
},
"qbittorrent": {
"name": "qBittorrent",
"integration_type": "service",
Add config flow to qBittorrent (#82560) * qbittorrent: implement config_flow Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: add English translations Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: create sensors with config_flow Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: set unique_id and icon Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: add tests for config_flow Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: detect duplicate config entries Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: import YAML config Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: update coveragerc Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> * qbittorrent: delete translations file * create `deprecated_yaml` issue in `setup_platform` * move qbittorrent test fixtures to conftest.py * improve code quality & remove wrong unique_id * keep PLATFORM_SCHEMA until YAML support is removed * remove CONF_NAME in config entry, fix setup_entry * improve test suite * clean up QBittorrentSensor class * improve user flow tests * explicit result assertion & minor tweaks in tests Co-authored-by: epenet <epenet@users.noreply.github.com> * implement entry unloading Co-authored-by: epenet <epenet@users.noreply.github.com> * add type hints * tweak config_flow data handling --------- Signed-off-by: Chris Xiao <30990835+chrisx8@users.noreply.github.com> Co-authored-by: epenet <epenet@users.noreply.github.com>
2023-03-29 20:13:41 +00:00
"config_flow": true,
"iot_class": "local_polling"
},
"qingping": {
"name": "Qingping",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"qld_bushfire": {
"name": "Queensland Bushfire Alert",
"integration_type": "service",
"config_flow": false,
"iot_class": "cloud_polling"
},
"qnap": {
2022-10-04 13:24:55 +00:00
"name": "QNAP",
"integrations": {
"qnap": {
"integration_type": "device",
Add config_flow to QNAP (#80450) * Create config_flow.py * Update __init__.py * Create const.py * Create strings.json * Update sensor.py * Update manifest.json * Update manifest.json * Add device name to entities * Correcting health sensor * Update manifest.json * Adding integration_type * Update sensor.py * Update __init__.py * Enums * Update sensor.py * Removed unused notify_create * Switch to SensorDeviceClass.TEMPERATURE * Update enums * Remove SENSOR_TYPES from const.py * Add SENSOR_TYPES to sensor.py * Removed dependancies * Removed import yaml * Removed entity_registry_enabled_default * Update const.py remove dups * Update manifest.json removed dups * Update __init__.py * Update const.py * Update manifest.json * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py remove unused * Update sensor.py add docstring * Update sensor.py add super * Remove FOLDER sensors * Remove VOLUME_NAME * fix cli * fix cli * Add config flow tests * Update requirements_test_all.txt * Update CODEOWNERS * Update homeassistant/components/qnap/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update __init__.py Change unload to walrus Remove async_setup * Update const.py remove PLATFORMS * Update __init__.py add Platform Enum As per epenet * Update __init__.py * Update config_flow.py * Update sensor.py * Update __init__.py ruff * Update config_flow.py Ruff * Update sensor.py * Update const.py remove attrs * Update sensor.py add attrs * Revert tuple for sensor extend * Update sensor.py * Update coordinator.py * Update coordinator.py * Update sensor.py * Update coordinator.py * Update homeassistant/components/qnap/__init__.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/const.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/__init__.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update coordinator.py * Update __init__.py * Update coordinator.py * Update sensor.py * Add device_info * Update sensor.py * Update sensor.py self._attr_unique_id * Update sensor.py * Update sensor.py * Type Hints * Move tuples * Drive sensor name * Remove caps * Remove caps * Add YAML import * Update sensor.py fix ruff * Revert tuples * Update sensor.py as per review * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * Update sensor.py * assert uid is not None * Update homeassistant/components/qnap/sensor.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/sensor.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update .coveragerc Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/config_flow.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/const.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update homeassistant/components/qnap/const.py Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: epenet <6771947+epenet@users.noreply.github.com> * Update sensor.py * Update config_flow.py add imports * Update const.py * Update sensor.py move confs to const * Update config_flow.py add const * Update test_config_flow.py remove const name * Update test_config_flow.py remove standard result const * Update test_config_flow.py * Combine tests * Update test_config_flow.py * Update config_flow.py * Update test_config_flow.py * Update config_flow.py * Update test_config_flow.py * Update test_config_flow.py * Update sensor.py change UID as requested * Update sensor.py added check for monitor_device * fix tests * Remove rounding * Revert "Remove rounding" This reverts commit 61bf653c069d37cd7c20e3dd2f555f80b6e5d94f. --------- Co-authored-by: starkillerOG <starkiller.og@gmail.com> Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2023-06-27 15:42:27 +00:00
"config_flow": true,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "QNAP"
},
"qnap_qsw": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "QNAP QSW"
}
}
},
"qrcode": {
"name": "QR Code",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"quadrafire": {
"name": "Quadra-Fire",
"integration_type": "virtual",
"supported_by": "intellifire"
},
"quantum_gateway": {
"name": "Quantum Gateway",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"qvr_pro": {
"name": "QVR Pro",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"qwikswitch": {
"name": "QwikSwitch QSUSB",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
Add new Rabbit Air integration (#66130) * Add new Rabbit Air integration * Remove py.typed file It is not needed and was just accidentally added to the commit. * Enable strict type checking for rabbitair component Keeping the code fully type hinted is a good idea. * Add missing type annotations * Remove translation file * Prevent data to be added to hass.data if refresh fails * Reload the config entry when the options change * Add missing type parameters for generics * Avoid using assert in production code * Move zeroconf to optional dependencies * Remove unnecessary logging Co-authored-by: Franck Nijhof <frenck@frenck.nl> * Remove unused keys from the manifest Co-authored-by: Franck Nijhof <frenck@frenck.nl> * Replace property with attr Co-authored-by: Franck Nijhof <frenck@frenck.nl> * Allow to return None for power The type of the is_on property now allows this. Co-authored-by: Franck Nijhof <frenck@frenck.nl> * Remove unnecessary method call Co-authored-by: Franck Nijhof <frenck@frenck.nl> * Update the python library The new version properly re-exports names from the package root. * Remove options flow Scan interval should not be part of integration configuration. This was the only option, so the options flow can be fully removed. * Replace properties with attrs * Remove multiline ternary operator * Use NamedTuple for hass.data * Remove unused logger variable * Move async_setup_entry up in the file * Adjust debouncer settings to use request_refresh * Prevent status updates during the cooldown period * Move device polling code to the update coordinator * Fix the problem with the switch jumping back and forth The UI seems to have a timeout of 2 seconds somewhere, which is just a little bit less than what we normally need to get an updated state. So the power switch would jump to its previous state and then immediately return to the new state. * Update the python library The new version fixes errors when multiple requests are executed simultaneously. * Fix incorrect check for pending call in debouncer This caused the polling to stop. * Fix tests * Update .coveragerc to exclude new file. * Remove test for Options Flow. * Update the existing entry when device access details change * Add Zeroconf discovery step * Fix tests The ZeroconfServiceInfo constructor now requires one more argument. * Fix typing for CoordinatorEntity * Fix signature of async_turn_on * Fix depreciation warnings * Fix manifest formatting * Fix warning about debouncer typing relates to 5ae5ae5392729b4c94a8004bd02e147d60227341 * Wait for config entry platform forwards * Apply some of the suggested changes * Do not put the MAC address in the title. Use a fixed title instead. * Do not format the MAC to use as a unique ID. * Do not catch exceptions in _async_update_data(). * Remove unused _entry field in the base entity class. * Use the standard attribute self._attr_is_on to keep the power state. * Store the MAC in the config entry data * Change the order of except clauses OSError is an ancestor class of TimeoutError, so TimeoutError should be handled first * Fix depreciation warnings * Fix tests The ZeroconfServiceInfo constructor arguments have changed. * Fix DeviceInfo import * Rename the method to make it clearer what it does * Apply suggestions from code review * Fix tests * Change speed/mode logic to use is_on from the base class * A zero value is more appropriate than None since None means "unknown", but we actually know that the speed is zero when the power is off. --------- Co-authored-by: Franck Nijhof <frenck@frenck.nl> Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-05 15:34:28 +00:00
"rabbitair": {
"name": "Rabbit Air",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"rachio": {
"name": "Rachio",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"radarr": {
"name": "Radarr",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"radio_browser": {
"name": "Radio Browser",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"radiotherm": {
"name": "Radio Thermostat",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"rainbird": {
"name": "Rain Bird",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
Add Rainforest RAVEn integration (#80061) * Add Rainforest RAVEn integration * Add Rainforest Automation brand * Add diagnostics to Rainforest RAVEn integration * Drop a test assertion for an undefined behavior * Add DEVICE_NAME test constant * Catch up with reality * Use Platform.SENSOR Co-authored-by: Robert Resch <robert@resch.dev> * Make rainforest_raven translatable * Stop setting device_class on unsupported scenarios * Rename rainforest_raven.data -> rainforest_raven.coordinator * Make _generate_unique_id more reusable * Move device synchronization into third party library * Switch from asyncio_timeout to asyncio.timeout * Ignore non-electric meters Co-authored-by: Robert Resch <robert@resch.dev> * Drop direct dependency on iso4217, bump aioraven * Use RAVEn-specific exceptions * Add timeouts to data updates * Move DeviceInfo generation from Sensor to Coordinator * Store meter macs as strings * Convert to using SelectSelector * Drop test_flow_user_invalid_mac This test isn't necessary now that SelectSelector is used. * Implement PR feedback - Split some long format lines - Simplify meter mac_id extraction in diagnostics - Expose unique_id using an attribute instead of a property - Add a comment about the meters dictionary shallow copy Co-authored-by: Erik Montnemery <erik@montnemery.com> * Simplify mac address redaction Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev> * Freeze RAVEnSensorEntityDescription dataclass Co-authored-by: Erik Montnemery <erik@montnemery.com> --------- Co-authored-by: Robert Resch <robert@resch.dev> Co-authored-by: Erik Montnemery <erik@montnemery.com> Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>
2024-01-05 13:00:54 +00:00
"rainforest": {
"name": "Rainforest Automation",
"integrations": {
"rainforest_eagle": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "Rainforest Eagle"
},
"rainforest_raven": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "Rainforest RAVEn"
}
}
},
"rainmachine": {
"name": "RainMachine",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"rapt_ble": {
"name": "RAPT Bluetooth",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"raspberry_pi": {
2022-10-04 13:24:55 +00:00
"name": "Raspberry Pi",
"integrations": {
"rpi_camera": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Raspberry Pi Camera"
},
"rpi_power": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling"
2022-10-04 13:24:55 +00:00
},
"remote_rpi_gpio": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
"name": "Raspberry Pi Remote GPIO"
2022-10-04 13:24:55 +00:00
}
}
},
"raspyrfm": {
"name": "RaspyRFM",
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state"
},
"raven_rock_mfg": {
"name": "Raven Rock MFG",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"rdw": {
"name": "RDW",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"recollect_waste": {
"name": "ReCollect Waste",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"recswitch": {
"name": "Ankuoo REC Switch",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"reddit": {
"name": "Reddit",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"refoss": {
"name": "Refoss",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"rejseplanen": {
"name": "Rejseplanen",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"remember_the_milk": {
"name": "Remember The Milk",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"renault": {
"name": "Renault",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
Renson integration (#56374) * Implemented Renson integration * - renamed component to a better name - Made cleaner code by splitting up files into different one - Fixed issues regarding getting data from library - Added service.yaml file * Added Renson services * cleanup translations * added config_flow tests * changed config_flow, removed all services * use SensorEntityDescription + introduced new binarySensor * fixed config_flow test * renamed renson_endura_delta to renson * refactored sensors and implemented binary_sensor * Changed some sensors to non measurement and added entity_registery_enabled_default for config sensors * Enabled binary_sensor * changed import to new renamed module * Merge files into correct files + cleaned some code * Change use of EntityDescription * Update codeowners * Fixed lint issues * Fix sensor * Create test.yml * Update test.yml * add github action tests * Format json files * Remove deprecated code * Update homeassistant/components/renson/binary_sensor.py Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> * Use Coordinqte in Sensor * Migrated binary sensor to use coordinate * Removed firmwareSensor * Add entity_catogory to binary_sensor * Add services * Revert "Add services" This reverts commit 028760d8d8454ce98cf14eed0c7927d228ccd5e6. * update requirements of Renson integration * Add services and fan * Fixed some issue + fixed PR comments * Cleanup code * Go back 2 years ago to the bare minimum for PR approval * Refactored code and added a lot of device classes to the entities * Fix some bugs * Add unique Id and some device class * Show the level value for CURRENT_LEVEL_FIELD instead of the raw data * Remove FILTER_PRESET_FIELD for now * Make the _attr_unique_id unique * Changed Renson tests * Moved Renson hass data into @dataclass * Changed test + added files to .coveragerc * Add device_class=SensorDeviceClass.Duration * Fix syntax --------- Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io> Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-06-10 07:21:33 +00:00
"renson": {
"name": "Renson",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"reolink": {
"name": "Reolink IP NVR/camera",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"repetier": {
"name": "Repetier-Server",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"rest": {
"name": "RESTful",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"rest_command": {
"name": "RESTful Command",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"rexel": {
"name": "Rexel Energeasy Connect",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"rflink": {
"name": "RFLink",
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state"
},
"rfxtrx": {
"name": "RFXCOM RFXtrx",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"rhasspy": {
"name": "Rhasspy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"ridwell": {
"name": "Ridwell",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ring": {
"name": "Ring",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"ripple": {
"name": "Ripple",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"risco": {
"name": "Risco",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"rituals_perfume_genie": {
"name": "Rituals Perfume Genie",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"rmvtransport": {
"name": "RMV",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"roborock": {
"name": "Roborock",
Add new Roborock Integration (#89456) * init roborock commit * init commit of roborock * removed some non-vacuum related code * removed some non-needed constants * removed translations * removed options flow * removed manual control * remove password login * removed go-to * removed unneeded function and improved device_stat * removed utils as it is unused * typing changes in vacuum.py * fixed test patch paths * removed unneeded records * removing unneeded code in tests * remove password from strings * removed maps in code * changed const, reworked functions * remove menu * fixed tests * 100% code coverage config_flow * small changes * removed unneeded patch * bump to 0.1.7 * removed services * removed extra functions and mop * add () to configEntryNotReady * moved coordinator into seperate file * update roborock testing * removed stale options code * normalize username for unique id * removed unneeded variables * fixed linter problems * removed stale comment * additional pr changes * simplify config_flow * fix config flow test * Apply suggestions from code review Co-authored-by: Allen Porter <allen.porter@gmail.com> * First pass at resolving PR comments * reworked config flow * moving vacuum attr * attempt to clean up conflig flow more * update package and use offline functionality * Fixed errors and fan bug * rework model and some other small changes * bump version * used default factory * moved some client creation into coord * fixed patch * Update homeassistant/components/roborock/coordinator.py Co-authored-by: Allen Porter <allen.porter@gmail.com> * moved async functions into gather * reworked gathers * removed random line * error catch if networking doesn't exist or timeout * bump to 0.6.5 * fixed mocked data reference url * change checking if we have no network information Co-authored-by: Allen Porter <allen.porter@gmail.com> --------- Co-authored-by: Allen Porter <allen.porter@gmail.com> Co-authored-by: Allen Porter <allen@thebends.org>
2023-04-20 14:02:58 +00:00
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"rocketchat": {
"name": "Rocket.Chat",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"roku": {
"name": "Roku",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"romy": {
"name": "ROMY Vacuum Cleaner",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"roomba": {
"name": "iRobot Roomba and Braava",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"roon": {
"name": "RoonLabs music player",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"rova": {
"name": "ROVA",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"rss_feed_template": {
"name": "RSS Feed Template",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"rtorrent": {
"name": "rTorrent",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"rtsp_to_webrtc": {
"name": "RTSPtoWebRTC",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"ruckus_unleashed": {
"name": "Ruckus Unleashed",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"russound": {
"name": "Russound",
"integrations": {
"russound_rio": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push",
2022-10-04 13:24:55 +00:00
"name": "Russound RIO"
},
"russound_rnet": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Russound RNET"
}
}
},
"ruuvi_gateway": {
"name": "Ruuvi Gateway",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-11-09 14:35:30 +00:00
"ruuvitag_ble": {
"name": "RuuviTag BLE",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"rympro": {
"name": "Read Your Meter Pro",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sabnzbd": {
"name": "SABnzbd",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"saj": {
"name": "SAJ Solar Inverter",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"samsam": {
"name": "SamSam",
"integration_type": "virtual",
"supported_by": "energyzero"
},
2022-10-04 13:24:55 +00:00
"samsung": {
"name": "Samsung",
"integrations": {
"familyhub": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Samsung Family Hub"
},
"samsungtv": {
"integration_type": "device",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Samsung Smart TV"
},
"syncthru": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Samsung SyncThru Printer"
}
}
},
"satel_integra": {
"name": "Satel Integra",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"schlage": {
"name": "Schlage",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"schluter": {
"name": "Schluter",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"scl": {
"name": "Seattle City Light (SCL)",
"integration_type": "virtual",
"supported_by": "opower"
},
"scrape": {
"name": "Scrape",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"screenaway": {
"name": "ScreenAway",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"screenlogic": {
"name": "Pentair ScreenLogic",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"scsgate": {
"name": "SCSGate",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"season": {
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"sendgrid": {
"name": "SendGrid",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"sense": {
"name": "Sense",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sensibo": {
"name": "Sensibo",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sensirion_ble": {
"name": "Sensirion BLE",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"sensorblue": {
"name": "SensorBlue",
"integration_type": "virtual",
"supported_by": "thermobeacon"
},
"sensorpro": {
"name": "SensorPro",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"sensorpush": {
"name": "SensorPush",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"sentry": {
"name": "Sentry",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"senz": {
"name": "nVent RAYCHEM SENZ",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"serial": {
"name": "Serial",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"serial_pm": {
"name": "Serial Particulate Matter",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"sesame": {
"name": "Sesame Smart Lock",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"seven_segments": {
"name": "Seven Segments OCR",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"seventeentrack": {
"name": "17TRACK",
Add ConfigFlow for seventeentrack integration (#111196) * Add config flow to 17Track * Import config from configuration.yaml * 1. move import to async_setup_platform 2. add USERNAME (email) in title for uniqueness * Add options flow * Add tests * Add CONF_SHOW_ARCHIVED and CONF_SHOW_DELIVERED to data from options * Update homeassistant/components/seventeentrack/__init__.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/__init__.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/manifest.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/config_flow.py Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> * Update homeassistant/components/seventeentrack/__init__.py Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> * Update homeassistant/components/seventeentrack/sensor.py Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com> * 1. Added repair issues 2. _async_validate_input inlined 3. added unique id 4. take default scan interval * fix * 1. move async_create_issue to async_setup_platform 2. fix tests 3. black + pylint * combine USER_SCHEMA and OPTIONS_SCHEMA * small fix * remove async_setup * fix tests and add 100% coverage * 1. remove CONFIG_SCHEMA 2. remove error log 3. add issue with more description when import issues happen 4. some linting * Update homeassistant/components/seventeentrack/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * use freezer use AsyncMock fix tests * add test_flow_fails parametrize tests where needed test_import_flow_already_configured - where a unique id already configured (abort flow) * lint * fix rebase issues * some more fix * 17Track revert tests and put them in a different PR * adapt tests to MockConfigEntry * Update tests/components/seventeentrack/test_sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/seventeentrack/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/seventeentrack/__init__.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * 1. create fixture for config and another with options 2. set options with default values 3. remove CONFIG_SCHEMA * Update tests/components/seventeentrack/conftest.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/seventeentrack/conftest.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * 1. get options from import data and default if not present 2. rename mock_config_entry_no_options -> mock_config_entry_with_default_options * move ACCOUNT_ID to mock_seventeentrack_api.return_value.profile.account_id * Apply suggestions from code review * Update tests/components/seventeentrack/test_config_flow.py --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
2024-03-11 11:47:39 +00:00
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sfr_box": {
"name": "SFR Box",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"sharkiq": {
"name": "Shark IQ",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"shell_command": {
"name": "Shell Command",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"shelly": {
"name": "Shelly",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"shodan": {
"name": "Shodan",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"shopping_list": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"sia": {
"name": "SIA Alarm Systems",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"sigfox": {
"name": "Sigfox",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"sighthound": {
"name": "Sighthound",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"signal_messenger": {
"name": "Signal Messenger",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"simplepush": {
"name": "Simplepush",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"simplisafe": {
"name": "SimpliSafe",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"simply_automated": {
"name": "Simply Automated",
"integration_type": "virtual",
"supported_by": "upb"
},
"simu": {
"name": "SIMU LiveIn2",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"simulated": {
"name": "Simulated",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"sinch": {
"name": "Sinch SMS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"sisyphus": {
"name": "Sisyphus",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"sky_hub": {
"name": "Sky Hub",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"skybeacon": {
"name": "Skybeacon",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"skybell": {
"name": "SkyBell",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"slack": {
"name": "Slack",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_push"
},
"sleepiq": {
"name": "SleepIQ",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"slide": {
"name": "Slide",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"slimproto": {
"name": "SlimProto (Squeezebox players)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"sma": {
"name": "SMA Solar",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"smappee": {
"name": "Smappee",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"smart_blinds": {
"name": "Smartblinds",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"smart_home": {
"name": "Smart Home",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"smart_meter_texas": {
"name": "Smart Meter Texas",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"smarther": {
"name": "Smarther",
"integration_type": "virtual",
"supported_by": "netatmo"
},
"smartthings": {
"name": "SmartThings",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"smarttub": {
"name": "SmartTub",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"smarty": {
"name": "Salda Smarty",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"smhi": {
"name": "SMHI",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sms": {
"name": "SMS notifications via GSM-modem",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"smtp": {
"name": "SMTP",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"smud": {
"name": "Sacramento Municipal Utility District (SMUD)",
"integration_type": "virtual",
"supported_by": "opower"
},
"snapcast": {
"name": "Snapcast",
"integration_type": "hub",
"config_flow": true,
2023-05-23 09:21:50 +00:00
"iot_class": "local_push"
},
"snips": {
"name": "Snips",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"snmp": {
"name": "SNMP",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"snooz": {
"name": "Snooz",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"solaredge": {
2022-10-04 13:24:55 +00:00
"name": "SolarEdge",
"integrations": {
"solaredge": {
"integration_type": "device",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "SolarEdge"
},
"solaredge_local": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "SolarEdge Local"
}
}
},
"solarlog": {
"name": "Solar-Log",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"solax": {
"name": "SolaX Power",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"soma": {
"name": "Soma Connect",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"somfy": {
"name": "Somfy",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"somfy_mylink": {
"name": "Somfy MyLink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "assumed_state"
},
"sonarr": {
"name": "Sonarr",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"sonos": {
"name": "Sonos",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
2022-10-04 13:24:55 +00:00
"sony": {
"name": "Sony",
"integrations": {
"braviatv": {
"integration_type": "device",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Sony Bravia TV"
},
"ps4": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Sony PlayStation 4"
},
"sony_projector": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Sony Projector"
},
"songpal": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Sony Songpal"
}
}
},
"soundtouch": {
"name": "Bose SoundTouch",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"spaceapi": {
"name": "Space API",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"spc": {
"name": "Vanderbilt SPC",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"speedtestdotnet": {
"name": "Speedtest.net",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"spider": {
"name": "Itho Daalderop Spider",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"splunk": {
"name": "Splunk",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"spotify": {
"name": "Spotify",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sql": {
"name": "SQL",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"srp_energy": {
"name": "SRP Energy",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"starline": {
"name": "StarLine",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"starlingbank": {
"name": "Starling Bank",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"starlink": {
"name": "Starlink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"startca": {
"name": "Start.ca",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"statistics": {
"name": "Statistics",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"statsd": {
"name": "StatsD",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"steam_online": {
"name": "Steam",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"steamist": {
"name": "Steamist",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"stiebel_eltron": {
"name": "STIEBEL ELTRON",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"stookalert": {
"name": "RIVM Stookalert",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"stookwijzer": {
"name": "Stookwijzer",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"streamlabswater": {
"name": "StreamLabs",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"subaru": {
"name": "Subaru",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"suez_water": {
"name": "Suez Water",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"sun": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "calculated",
"single_config_entry": true
},
"sunweg": {
"name": "Sun WEG",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"supervisord": {
"name": "Supervisord",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"supla": {
"name": "SUPLA",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"surepetcare": {
"name": "Sure Petcare",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"swepco": {
"name": "Southwestern Electric Power Company (SWEPCO)",
"integration_type": "virtual",
"supported_by": "opower"
},
"swiss_hydrological_data": {
"name": "Swiss Hydrological Data",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"swiss_public_transport": {
"name": "Swiss public transport",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"swisscom": {
"name": "Swisscom Internet-Box",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"switchbee": {
"name": "SwitchBee",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"switchbot": {
"name": "SwitchBot",
"integrations": {
"switchbot": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "SwitchBot Bluetooth"
},
"switchbot_cloud": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "SwitchBot Cloud"
}
}
},
"switcher_kis": {
"name": "Switcher",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"switchmate": {
"name": "Switchmate SimplySmart Home",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"syncthing": {
"name": "Syncthing",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"synology": {
"name": "Synology",
"integrations": {
"synology_chat": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Synology Chat"
},
"synology_dsm": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Synology DSM"
},
"synology_srm": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Synology SRM"
}
}
},
"syslog": {
"name": "Syslog",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"system_bridge": {
"name": "System Bridge",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"systemmonitor": {
"name": "System Monitor",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"tado": {
"name": "Tado",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tag": {
"integration_type": "hub",
"config_flow": false
},
"tailscale": {
"name": "Tailscale",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tailwind": {
"name": "Tailwind",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"tami4": {
"name": "Tami4 Edge / Edge+",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tank_utility": {
"name": "Tank Utility",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"tankerkoenig": {
"name": "Tankerkoenig",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tapsaff": {
"name": "Taps Aff",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"tasmota": {
"name": "Tasmota",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"tautulli": {
"name": "Tautulli",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"tcp": {
"name": "TCP",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
Implement TechnoVE integration (#106029) * Implement TechnoVE integration Only the basic sensors for now. * Add technoVE to strict typing * Implement TechnoVE PR suggestions * Remove Diagnostic from TechnoVE initial PR * Switch status sensor to Enum device class * Revert zeroconf for adding it back in subsequent PR * Implement changes from feedback in TechnoVE PR * Update homeassistant/components/technove/models.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/technove/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/technove/models.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Remove unnecessary translation keys * Fix existing technoVE tests * Use snapshot testing for TechnoVE sensors * Improve unit tests for TechnoVE * Add missing coverage for technoVE config flow * Add TechnoVE coordinator tests * Modify device_fixture for TechnoVE from PR Feedback * Change CONF_IP_ADDRESS to CONF_HOST for TechnoVE * Update homeassistant/components/technove/config_flow.py Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com> * Update homeassistant/components/technove/models.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/technove/models.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Implement feedback from TechnoVE PR * Add test_sensor_update_failure to TechnoVE sensor tests * Add test for error recovery during config flow of TechnoVE * Remove test_coordinator.py from TechnoVE --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-17 10:04:35 +00:00
"technove": {
"name": "TechnoVE",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"ted5000": {
"name": "The Energy Detective TED5000",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
Add tedee integration (#102846) * init tedee * init tests * add config flow tests * liniting * test * undo * linting * pylint * add tests * more tests * more tests * update snapshot * more tests * typing * strict typing * cleanups * cleanups, fix tests * remove extra platforms * remove codeowner * improvements * catch tedeeclientexception * allow bridge selection in CF * allow bridge selection in CF * allow bridge selection in CF * allow bridge selection in CF * abort earlier * auto-select bridge * remove cloud token, optionsflow to remove size * remove options flow leftovers * improve coverage * defer coordinator setting to after first update * define coordinator * some improvements * remove diagnostics, webhook * remove reauth flow, freeze data classes * fix lock test * Update homeassistant/components/tedee/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/__init__.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * requested changes * requested changes * Update lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update entity.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * requested changes * Update tests/components/tedee/test_lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/tedee/test_lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/tedee/test_lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/tedee/test_lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/tedee/conftest.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update tests/components/tedee/test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/tedee/lock.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * requested changes * requested changes * requested changes * revert load fixture * change tests * Update test_config_flow.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update coordinator.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * remove warning * move stuff out of try * add docstring * tedee lowercase, time.time * back to some uppercase, time.time * awaitable --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-29 13:55:41 +00:00
"tedee": {
"name": "Tedee",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"telegram": {
2022-10-04 13:24:55 +00:00
"name": "Telegram",
"integrations": {
"telegram": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-10-04 13:24:55 +00:00
"name": "Telegram"
},
"telegram_bot": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Telegram bot"
}
}
},
2022-10-04 13:24:55 +00:00
"telldus": {
"name": "Telldus",
"integrations": {
"tellduslive": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Telldus Live"
},
"tellstick": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state",
2022-10-04 13:24:55 +00:00
"name": "TellStick"
}
}
},
"telnet": {
"name": "Telnet",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"temper": {
"name": "TEMPer",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"tensorflow": {
"name": "TensorFlow",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"tesla": {
"name": "Tesla",
"integrations": {
"powerwall": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Tesla Powerwall"
},
"tesla_wall_connector": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Tesla Wall Connector"
}
}
},
"teslemetry": {
"name": "Teslemetry",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tessie": {
"name": "Tessie",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tfiac": {
"name": "Tfiac",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"thermobeacon": {
"name": "ThermoBeacon",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"thermoplus": {
"name": "ThermoPlus",
"integration_type": "virtual",
"supported_by": "thermobeacon"
},
"thermopro": {
"name": "ThermoPro",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"thermoworks_smoke": {
"name": "ThermoWorks Smoke",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"thethingsnetwork": {
"name": "The Things Network",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"thingspeak": {
"name": "ThingSpeak",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"thinkingcleaner": {
"name": "Thinking Cleaner",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"third_reality": {
"name": "Third Reality",
"iot_standards": [
"zigbee"
]
},
"thomson": {
"name": "Thomson",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"thread": {
"name": "Thread",
"integration_type": "service",
"config_flow": true,
"iot_class": "local_polling"
},
"tibber": {
"name": "Tibber",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tikteck": {
"name": "Tikteck",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"tile": {
"name": "Tile",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tilt_ble": {
"name": "Tilt Hydrometer BLE",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"time_date": {
"integration_type": "service",
"config_flow": true,
"iot_class": "local_push"
},
"tmb": {
"name": "Transports Metropolitans de Barcelona",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"todoist": {
"name": "Todoist",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"tolo": {
"name": "TOLO Sauna",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"tomato": {
"name": "Tomato",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"tomorrowio": {
"name": "Tomorrow.io",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"toon": {
"name": "Toon",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"torque": {
"name": "Torque",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"totalconnect": {
"name": "Total Connect",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"touchline": {
"name": "Roth Touchline",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"tplink": {
"name": "TP-Link",
"integrations": {
"tplink": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
Add authentication to tplink integration for newer devices (#105143) * Add authentication flows to tplink integration to enable newer device protocol support * Add websession passing to tplink integration discover methods * Use SmartDevice.connect() * Update to use DeviceConfig * Use credential hashes * Bump python-kasa to 0.6.0.dev0 * Fix tests and address review comments * Add autodetection for L530, P110, and L900 This adds mac address prefixes for the devices I have. The wildcards are left quite lax assuming different series may share the same prefix. * Bump tplink to 0.6.0.dev1 * Add config flow tests * Use short_mac if alias is None and try legacy connect on discovery timeout * Add config_flow tests * Add init tests * Migrate to aiohttp * add some more ouis * final * ip change fix * add fixmes * fix O(n) searching * fix O(n) searching * move code that cannot fail outside of try block * fix missing reauth_successful string * add doc strings, cleanups * error message by password * dry * adjust discovery timeout * integration discovery already formats mac * tweaks * cleanups * cleanups * Update post review and fix broken tests * Fix TODOs and FIXMEs in test_config_flow * Add pragma no cover * bump, apply suggestions * remove no cover * use iden check * Apply suggestions from code review * Fix branched test and update integration title * legacy typing * Update homeassistant/components/tplink/__init__.py * lint * Remove more unused consts * Update test docstrings * Add sdb9696 to tplink codeowners * Update docstring on test for invalid DeviceConfig * Update test stored credentials test --------- Co-authored-by: Teemu Rytilahti <tpr@iki.fi> Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-21 15:25:12 +00:00
"name": "TP-Link Smart Home"
},
"tplink_omada": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling",
"name": "TP-Link Omada"
},
"tplink_lte": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
"name": "TP-Link LTE"
2024-02-07 05:29:26 +00:00
},
"tplink_tapo": {
"integration_type": "virtual",
"config_flow": false,
"supported_by": "tplink",
"name": "Tapo"
}
},
"iot_standards": [
"matter"
]
},
"traccar": {
"name": "Traccar",
"integrations": {
"traccar": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push",
"name": "Traccar Client"
},
"traccar_server": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "Traccar Server"
}
}
},
"tractive": {
"name": "Tractive",
"integration_type": "device",
"config_flow": true,
"iot_class": "cloud_push"
},
2022-10-04 13:24:55 +00:00
"trafikverket": {
"name": "Trafikverket",
"integrations": {
"trafikverket_camera": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Trafikverket Camera"
},
2022-10-04 13:24:55 +00:00
"trafikverket_ferry": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Trafikverket Ferry"
},
"trafikverket_train": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Trafikverket Train"
},
"trafikverket_weatherstation": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Trafikverket Weather Station"
}
}
},
"transmission": {
"name": "Transmission",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"transport_nsw": {
"name": "Transport NSW",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"travisci": {
"name": "Travis-CI",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"tuya": {
"name": "Tuya",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"twentemilieu": {
"name": "Twente Milieu",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"twilio": {
2022-10-04 13:24:55 +00:00
"name": "Twilio",
"integrations": {
"twilio": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_push",
"name": "Twilio"
},
"twilio_call": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Twilio Call"
},
"twilio_sms": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Twilio SMS"
}
}
},
"twinkly": {
"name": "Twinkly",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"twitch": {
"name": "Twitch",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"twitter": {
2023-10-20 10:02:43 +00:00
"name": "X",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
2022-10-04 15:45:40 +00:00
"u_tec": {
"name": "U-tec",
"integrations": {
"ultraloq": {
"integration_type": "virtual",
"config_flow": false,
"iot_standards": [
"zwave"
],
"name": "Ultraloq"
}
}
2022-10-04 15:45:40 +00:00
},
2022-09-29 00:30:50 +00:00
"ubiquiti": {
"name": "Ubiquiti",
"integrations": {
"unifi": {
"integration_type": "hub",
2022-09-29 00:30:50 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "UniFi Network"
},
"unifi_direct": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-09-29 00:30:50 +00:00
"name": "UniFi AP"
},
"unifiled": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-09-29 00:30:50 +00:00
"name": "UniFi LED"
},
"unifiprotect": {
"integration_type": "hub",
2022-09-29 00:30:50 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "UniFi Protect"
}
}
},
"ubiwizz": {
"name": "Ubiwizz",
"integration_type": "virtual",
"supported_by": "overkiz"
},
"uk_transport": {
"name": "UK Transport",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"ukraine_alarm": {
"name": "Ukraine Alarm",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"universal": {
"name": "Universal media player",
"integration_type": "hub",
"config_flow": false,
"iot_class": "calculated"
},
"upb": {
"name": "Universal Powerline Bus (UPB)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"upc_connect": {
"name": "UPC Connect Box",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"upcloud": {
"name": "UpCloud",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"upnp": {
"name": "UPnP/IGD",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"uprise_smart_shades": {
"name": "Uprise Smart Shades",
"integration_type": "virtual",
"supported_by": "motion_blinds"
},
"uptime": {
"integration_type": "service",
"config_flow": true,
"iot_class": "local_push",
"single_config_entry": true
},
"uptimerobot": {
"name": "UptimeRobot",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"usgs_earthquakes_feed": {
"name": "U.S. Geological Survey Earthquake Hazards (USGS)",
"integration_type": "service",
"config_flow": false,
"iot_class": "cloud_polling"
},
"uvc": {
"name": "Ubiquiti UniFi Video",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"v2c": {
"name": "V2C",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"vallox": {
"name": "Vallox",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"vasttrafik": {
"name": "V\u00e4sttrafik",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"velbus": {
"name": "Velbus",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"velux": {
"name": "Velux",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"venstar": {
"name": "Venstar",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"vera": {
"name": "Vera",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"verisure": {
"name": "Verisure",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"vermont_castings": {
"name": "Vermont Castings",
"integration_type": "virtual",
"supported_by": "intellifire"
},
"versasense": {
"name": "VersaSense",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"version": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"vesync": {
"name": "VeSync",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"viaggiatreno": {
"name": "Trenitalia ViaggiaTreno",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"vicare": {
"name": "Viessmann ViCare",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"vilfo": {
"name": "Vilfo Router",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"vivotek": {
"name": "VIVOTEK",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"vizio": {
"name": "VIZIO SmartCast",
2023-04-27 07:22:03 +00:00
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"vlc": {
2022-10-04 13:24:55 +00:00
"name": "VideoLAN",
"integrations": {
"vlc": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "VLC media player"
},
"vlc_telnet": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "VLC media player via Telnet"
}
}
},
"vodafone_station": {
"name": "Vodafone Station",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"voicerss": {
"name": "VoiceRSS",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"voip": {
"name": "Voice over IP",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"volkszaehler": {
"name": "Volkszaehler",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"volumio": {
"name": "Volumio",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"volvooncall": {
"name": "Volvo On Call",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"vulcan": {
"name": "Uonet+ Vulcan",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"vultr": {
"name": "Vultr",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"w800rf32": {
"name": "WGL Designs W800RF32",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"wake_on_lan": {
"name": "Wake on LAN",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"wallbox": {
"name": "Wallbox",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"waqi": {
"name": "World Air Quality Index (WAQI)",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"waterfurnace": {
"name": "WaterFurnace",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"watttime": {
"name": "WattTime",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"waze_travel_time": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
Add WeatherFlow integration (#75530) * merge upstream * Update homeassistant/components/weatherflow/__init__.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * feat: Removing unused keys * feat: Addressing PR to remove DEFAULT_HOST from init * feat: Addressing PR abort case * feat: Ensure there is a default host always * feat: Addressing PR comments and fixing entity names via local testing * feat: Tested units * feat: updated variable names to hopefully add some clarity to the function * feat: added more var names for clarity * feat: Fixed abort * Update homeassistant/components/weatherflow/__init__.py Co-authored-by: G Johansson <goran.johansson@shiftit.se> * feat: Removed an unnecessary line * feat: Test updates * feat: Removed unreachable code * feat: Tons of improvements * removed debug code * feat: small tweaks * feat: Fixed density into HA Compatibility * feat: Handled the options incorrectly... now fixed * feat: Handled the options incorrectly... now fixed * Update homeassistant/components/weatherflow/manifest.json Co-authored-by: J. Nick Koston <nick@koston.org> * Cleaned up callback in __init__ Cleaning up config_flow as well * feat: Cleaned up a stupid test * feat: Simulating a timeout event * feat: Triggering timeout in mocking * feat: trying to pass tests * refactor: Moved code around so easier to test * Update homeassistant/components/weatherflow/__init__.py Co-authored-by: J. Nick Koston <nick@koston.org> * feat: Incremental changes moving along well * feat: Last fix before re-review * feat: Hopefully the tests shall pass * feat: Remove domian from unique id * feat: Fixed entity name * feat: Removed unneeded lambda - to make thread safe * Working version... * working * working * feat: Remove tuff * feat: Removed dual call * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * feat: updates based on pr * feat: removed some self refrences * feat: Mod RSSI * feat: Removed the custom Air Density (will add in a later PR) * feat: Significant cleanup of config flow * feat: Reworked the configflwo with the help of Joostlek * feat: Updated test coverage * feat: Removing bakcing lib attribute * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * feat: Updated translations * feat: Renamed CUSTOM to VOC * feat: Extreme simplification of config flow * feat: Pushing incremental changes * feat: Fixing test coverage * feat: Added lambda expressions for attributes and removed the custom AirDensity sensor * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: J. Nick Koston <nick@koston.org> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: J. Nick Koston <nick@koston.org> * feat: Removed default lambda expression from raw_data_conv_fn * feat: Added back default variable for lambda * feat: Updated tests accordingly * feat: Updated tests * made sure to patch correct import * made sure to patch correct import * feat: Fixed up tests ... added missing asserts * feat: Dropped model * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: J. Nick Koston <nick@koston.org> * Refactor: Updated code * refactor: Removed commented code * feat: close out all tests * feat: Fixing the patch * feat: Removed a bunch of stuff * feat: Cleaning up tests even more * fixed patch and paramaterized a test * feat: Addressing most recent comments * updates help of joostlek * feat: Updated coverage for const * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * Update homeassistant/components/weatherflow/sensor.py Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> * feat: Addressing more PR issues... probably still a few remain * using const logger * Update homeassistant/components/weatherflow/strings.json Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com> --------- Co-authored-by: G Johansson <goran.johansson@shiftit.se> Co-authored-by: J. Nick Koston <nick@koston.org> Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-09-27 15:28:05 +00:00
"weatherflow": {
"name": "WeatherFlow",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"weatherflow_cloud": {
"name": "WeatherflowCloud",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"webhook": {
"name": "Webhook",
"integration_type": "hub",
"config_flow": false
},
"webmin": {
"name": "Webmin",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"wemo": {
"name": "Belkin WeMo",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"whirlpool": {
"name": "Whirlpool Appliances",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"whisper": {
"name": "Whisper",
"integration_type": "virtual",
"supported_by": "wyoming"
},
"whois": {
"name": "Whois",
"integration_type": "service",
"config_flow": true,
"iot_class": "cloud_polling"
},
"wiffi": {
"name": "Wiffi",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"wilight": {
"name": "WiLight",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"wirelesstag": {
"name": "Wireless Sensor Tags",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"withings": {
"name": "Withings",
"integration_type": "hub",
"config_flow": true,
2023-10-15 16:04:03 +00:00
"iot_class": "cloud_push"
},
"wiz": {
"name": "WiZ",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"wled": {
"name": "WLED",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_push"
},
"wolflink": {
"name": "Wolf SmartSet Service",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_polling"
},
"workday": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"worldclock": {
"name": "Worldclock",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"worldtidesinfo": {
"name": "World Tides",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"worxlandroid": {
"name": "Worx Landroid",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"ws66i": {
"name": "Soundavo WS66i 6-Zone Amplifier",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"wsdot": {
"name": "Washington State Department of Transportation (WSDOT)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"wyoming": {
"name": "Wyoming Protocol",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"x10": {
"name": "Heyu X10",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"xeoma": {
"name": "Xeoma",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"xiaomi": {
2022-10-04 13:24:55 +00:00
"name": "Xiaomi",
"integrations": {
"xiaomi_aqara": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Xiaomi Gateway (Aqara)"
},
"xiaomi_ble": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Xiaomi BLE"
},
"xiaomi_miio": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_polling",
"name": "Xiaomi Miio"
},
"xiaomi_tv": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "assumed_state",
2022-10-04 13:24:55 +00:00
"name": "Xiaomi TV"
},
"xiaomi": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Xiaomi"
}
}
},
"xmpp": {
"name": "Jabber (XMPP)",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push"
},
"xs1": {
"name": "EZcontrol XS1",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
2022-10-04 13:24:55 +00:00
"yale": {
"name": "Yale",
"integrations": {
"august": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_push",
"name": "August"
},
"yale_smart_alarm": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "cloud_polling",
"name": "Yale Smart Living"
},
"yalexs_ble": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Yale Access Bluetooth"
},
"yale_home": {
"integration_type": "virtual",
"config_flow": false,
"supported_by": "august",
"name": "Yale Home"
2022-10-04 13:24:55 +00:00
}
}
},
"yamaha": {
"name": "Yamaha",
"integrations": {
"yamaha": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
"name": "Yamaha Network Receivers"
},
"yamaha_musiccast": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push",
"name": "MusicCast"
}
}
},
2022-10-04 13:24:55 +00:00
"yandex": {
"name": "Yandex",
"integrations": {
"yandex_transport": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling",
2022-10-04 13:24:55 +00:00
"name": "Yandex Transport"
},
"yandextts": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_push",
2022-10-04 13:24:55 +00:00
"name": "Yandex TTS"
}
}
},
"yardian": {
"name": "Yardian",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"yeelight": {
2022-10-04 13:24:55 +00:00
"name": "Yeelight",
"integrations": {
"yeelight": {
"integration_type": "hub",
2022-10-04 13:24:55 +00:00
"config_flow": true,
"iot_class": "local_push",
"name": "Yeelight"
},
"yeelightsunflower": {
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling",
2022-10-04 13:24:55 +00:00
"name": "Yeelight Sunflower"
}
}
},
"yi": {
"name": "Yi Home Cameras",
"integration_type": "device",
"config_flow": false,
"iot_class": "local_polling"
},
"yolink": {
"name": "YoLink",
"integration_type": "hub",
"config_flow": true,
"iot_class": "cloud_push"
},
"youless": {
"name": "YouLess",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"zabbix": {
"name": "Zabbix",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"zamg": {
"name": "GeoSphere Austria",
"integration_type": "hub",
2022-10-26 16:35:12 +00:00
"config_flow": true,
"iot_class": "cloud_polling"
},
"zengge": {
"name": "Zengge",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"zerproc": {
"name": "Zerproc",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"zestimate": {
"name": "Zestimate",
"integration_type": "hub",
"config_flow": false,
"iot_class": "cloud_polling"
},
"zeversolar": {
"name": "Zeversolar",
"integration_type": "device",
"config_flow": true,
"iot_class": "local_polling"
},
"zha": {
"name": "Zigbee Home Automation",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_polling"
},
"zhong_hong": {
"name": "ZhongHong",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_push"
},
"ziggo_mediabox_xl": {
"name": "Ziggo Mediabox XL",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
"zodiac": {
"integration_type": "hub",
"config_flow": true,
"iot_class": "calculated"
},
"zondergas": {
"name": "ZonderGas",
"integration_type": "virtual",
"supported_by": "energyzero"
},
"zoneminder": {
"name": "ZoneMinder",
"integration_type": "hub",
"config_flow": false,
"iot_class": "local_polling"
},
2022-10-04 15:45:40 +00:00
"zooz": {
"name": "Zooz",
"iot_standards": [
"zwave"
]
},
"zwave_js": {
"name": "Z-Wave",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
},
"zwave_me": {
"name": "Z-Wave.Me",
"integration_type": "hub",
"config_flow": true,
"iot_class": "local_push"
}
},
"helper": {
"counter": {
"integration_type": "helper",
"config_flow": false
},
"derivative": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"group": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"input_boolean": {
"integration_type": "helper",
"config_flow": false
},
"input_button": {
"integration_type": "helper",
"config_flow": false
},
"input_datetime": {
"integration_type": "helper",
"config_flow": false
},
"input_number": {
"integration_type": "helper",
"config_flow": false
},
"input_select": {
"integration_type": "helper",
"config_flow": false
},
"input_text": {
"integration_type": "helper",
"config_flow": false
},
"integration": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "local_push"
},
"min_max": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"random": {
"name": "Random",
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"schedule": {
"integration_type": "helper",
"config_flow": false
},
"switch_as_x": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"template": {
"name": "Template",
"integration_type": "helper",
"config_flow": true,
"iot_class": "local_push"
},
"threshold": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "local_polling"
},
"timer": {
"name": "Timer",
"integration_type": "helper",
"config_flow": false
},
"tod": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"trend": {
"name": "Trend",
"integration_type": "helper",
"config_flow": true,
"iot_class": "calculated"
},
"utility_meter": {
"integration_type": "helper",
"config_flow": true,
"iot_class": "local_push"
}
},
"translated_name": [
"alert",
"aurora",
"cert_expiry",
2023-03-21 17:41:27 +00:00
"counter",
"cpuspeed",
"demo",
"derivative",
"emulated_roku",
"energenie_power_sockets",
"filesize",
"garages_amsterdam",
"generic",
"google_travel_time",
"group",
"growatt_server",
"holiday",
"homekit_controller",
"input_boolean",
"input_button",
"input_datetime",
"input_number",
"input_select",
"input_text",
"integration",
"islamic_prayer_times",
"local_calendar",
"local_ip",
"local_todo",
"min_max",
"mobile_app",
"moehlenhoff_alpha2",
"moon",
2023-09-19 15:10:29 +00:00
"nextbus",
"nmap_tracker",
"plant",
"proximity",
"rpi_power",
"schedule",
"season",
"shopping_list",
"sun",
"switch_as_x",
"tag",
"threshold",
"time_date",
"tod",
"uptime",
"utility_meter",
"version",
"waze_travel_time",
"workday",
"zodiac"
]
}