* Add support for Fujitsu HVAC devices
* Add the entity code to .coveragerc
* Only include code that can fail in the try/except block
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove empty keys from manifest
* Remove VERSION as it's already the default
* Remve the get_devices function and use asyncio.gather to parallelize dev updates
* Move initial step to a function
* Let KeyError bubble up. If we are passed an invalid mode it's probably worth raising an exception.
* Await the gather
* Use the async version of the refresh_auth call
* Use the serial number as unique id
* Use HA constant for precision
* Use dev instead of self._dev
* Move to property decorated methods
* Remove bidict dependency
* Setup one config entry for our api credentials instead of per device
* Remove bidict from requirements
* Signout and remove our api object on unload
* Use app credentials from ayla_iot_unofficial
* Use entry_id as a key to store our API object
* Delete unused code
* Create reverse mappings from forward mapping instead of hardcoding them
* Clean up the property methods
* Only import part of config_entries we are using
* Implement suggested changes
* Fix tests to use new API consts
* Add support for reauth
* Use a coordinator instead of doing per-entity refresh
* Auto is equivalent to HEAT_COOL not AUTO
* Add ON and OFF to list of supported features
* Use the mock_setup_entry fixture for the reauth tests
* Parametrize testing of config flow exceptions
* Only wrap fallable code in try/except
* Add tests for coordinator
* Use self.coordinator_context instead of self._dev.device_serial_number
* Move timeout to ayla_iot_unofficial
* Add description for is_europe field
* Bump version of ayla-iot-unofficial
* Remove turn_on/turn_off warning
* Move coordinator creating to __init__
* Add the type of coordinator to the CoordiatorEntity
* Update docstring for FujitsuHVACDevice constructor
* Fix missed self._dev to dev
* Abort instead of showing the form again with an error when usernames are different
* Remove useless argument
* Fix tests
* Implement some suggestions
* Use a device property the maps to the coordinator data
* Fix api sign out when unloading the entry
* Address comments
* Fix device lookup
* Move API sign in to coordinator setup
* Get rid of FujitsuHVACConfigData
* Fix async_setup_entry signature
* Fix mock_ayla_api
* Cleanup common errors
* Add test to check that re adding the same account fails
* Also patch new_ayla_api in __init__.py
* Create a fixture to generate test devices
* Add a setup_integration function that does the setup for a mock config entry
* Rework unit tests for the coordinator
* Fix typos
* Use hass session
* Rework reauth config flow to only modify password
* Update name to be more use-friendly
* Fix wrong type for entry in async_unload_entry
* Let TimeoutError bubble up as teh base class handles it
* Make the mock ayla api return some devices by default
* Move test to test_climate.py
* Move tests to test_init.py
* Remove reauth flow
* Remove useless mock setup
* Make our mock devices look real
* Fix tests
* Rename fujitsu_hvac to fujitsu_fglair and rename the integration to FGLair
* Add the Fujitsu brand
* Add a helper function to generate an entity_id from a device
* Use entity_id to remove hardcoded entity ids
* Add a test to increase code coverage
---------
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
* Add ElevenLabs text-to-speech integration
* Remove commented out code
* Use model_id instead of model_name for elevenlabs api
* Apply suggestions from code review
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
* Use async client instead of sync
* Add ElevenLabs code owner
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Set entity title to voice
* Rename to elevenlabs
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Allow multiple voices and options flow
* Sort default voice at beginning
* Rework config flow to include default model and reloading on options flow
* Add error to strings
* Add ElevenLabsData and suggestions from code review
* Shorten options and config flow
* Fix comments
* Fix comments
* Add wip
* Fix
* Cleanup
* Bump elevenlabs version
* Add data description
* Fix
---------
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Michael Hansen <mike@rhasspy.org>
Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
* Add an integration for Bryant Evolution HVAC systems.
* Update newly created tests so that they pass.
* Improve compliance with home assistant guidelines.
* Added tests
* remove xxx
* Minor test cleanups
* Add a test for reading HVAC actions.
* Update homeassistant/components/bryant_evolution/__init__.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/bryant_evolution/climate.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/bryant_evolution/climate.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/bryant_evolution/climate.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/bryant_evolution/climate.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/bryant_evolution/climate.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/bryant_evolution/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Address reviewer comments.
* Address additional reviewer comments.
* Use translation for exception error messages.
* Simplify config flow.
* Continue addressing comments
* Use mocking rather than DI to provide a for-test client in tests.
* Fix a failure in test_config_flow.py
* Track host->filename in strings.json.
* Use config entry ID for climate entity unique id
* Guard against fan mode returning None in async_update.
* Move unavailable-client check from climate.py to init.py.
* Improve test coverage
* Bump evolutionhttp version
* Address comments
* update comment
* only have one _can_reach_device fn
* Auto-detect which systems and zones are attached.
* Add support for reconfiguration
* Fix a few review comments
* Introduce multiple devices
* Track evolutionhttp library change that returns additional per-zone information during enumeration
* Move construction of devices to init
* Avoid triplicate writing
* rework tests to use mocks
* Correct attribute name to unbreak test
* Pull magic tuple of system-zone into a constant
* Address some test comments
* Create test_init.py
* simplify test_reconfigure
* Replace disable_auto_entity_update with mocks.
* Update tests/components/bryant_evolution/test_climate.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update tests/components/bryant_evolution/test_climate.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update tests/components/bryant_evolution/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update homeassistant/components/bryant_evolution/config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update tests/components/bryant_evolution/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update tests/components/bryant_evolution/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* fix test errors
* do not access runtime_data in tests
* use snapshot_platform and type fixtures
---------
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Initial import 0.0.2
* Fixes to URL, and removed commits
* Initial import 0.0.2
* Fixes to URL, and removed commits
* Added first test for iotty
* First release
* Reviewers request #1
- Removed clutter
- Added support for new naming convention for IottySmartSwitch entity
* Removed commmented code
* Some modifications
* Modified REST EP for iotty CloudApi
* Initial import 0.0.2
* Fixes to URL, and removed commits
* Added first test for iotty
* First release
* Rebased and resolved conflicts
* Reviewers request #1
- Removed clutter
- Added support for new naming convention for IottySmartSwitch entity
* Removed commmented code
* Some modifications
* Modified REST EP for iotty CloudApi
* Removed empty entries in manifest.json
* Added test_config_flow
* Fix as requested by @edenhaus
* Added test_init
* Removed comments, added one assert
* Added TEST_CONFIG_FLOW
* Added test for STORE_ENTITY
* Increased code coverage
* Full coverage for api.py
* Added tests for switch component
* Converted INFO logs onto DEBUG logs
* Removed .gitignore from commits
* Modifications to SWITCH.PY
* Initial import 0.0.2
* Fixes to URL, and removed commits
* Added first test for iotty
* First release
* Rebased and resolved conflicts
* Fixed conflicts
* Reviewers request #1
- Removed clutter
- Added support for new naming convention for IottySmartSwitch entity
* Removed commmented code
* Some modifications
* Modified REST EP for iotty CloudApi
* Removed empty entries in manifest.json
* Added test_config_flow
* Some modifications
* Fix as requested by @edenhaus
* Added test_init
* Removed comments, added one assert
* Added TEST_CONFIG_FLOW
* Added test for STORE_ENTITY
* Increased code coverage
* Full coverage for api.py
* Added tests for switch component
* Converted INFO logs onto DEBUG logs
* Removed .gitignore from commits
* Modifications to SWITCH.PY
* Fixed tests for SWITCH
* First working implementation of Coordinator
* Increased code coverage
* Full code coverage
* Missing a line in testing
* Update homeassistant/components/iotty/__init__.py
Co-authored-by: Robert Resch <robert@resch.dev>
* Update homeassistant/components/iotty/__init__.py
Co-authored-by: Robert Resch <robert@resch.dev>
* Modified coordinator as per request by edenhaus
* use coordinator entities for switches
* move platforms to constants
* fix whitespace with ruff-format
* correct iotty entry in application_credentials list
* minor style improvements
* refactor function name
* handle new and deleted devices
* improve code for adding devices after first initialization
* use typed config entry instead of adding known devices to hass.data
* improve iotty entity removal
* test listeners update cycle
* handle iotty as devices and not only as entities
* fix test typing for mock config entry
* test with fewer mocks for an integration test style opposed to the previous unit test style
* remove useless tests and add more integration style tests
* check if device_to_remove is None
* integration style tests for turning switches on and off
* remove redundant coordinator tests
* check device status after issuing command in tests
* remove unused fixtures
* add strict typing for iotty
* additional asserts and named snapshots in tests
* fix mypy issues after enabling strict typing
* upgrade iottycloud version to 0.1.3
* move coordinator to runtime_data
* remove entity name
* fix typing issues
* coding style fixes
* improve tests coding style and assertion targets
* test edge cases when apis are not working
* improve tests comments and assertions
---------
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Shapour Nemati <shapour.nemati@iotty.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: shapournemati-iotty <130070037+shapournemati-iotty@users.noreply.github.com>
* Init Autarco integration
* Add integration code with tests
* Update every 5 minutes
* Process all feedback from Joost
* Bump lib to v2.0.0
* Add more then one site if present
* Fix issue with entity translation
* Update the test for sensor entities
* Fix round two based on feedback from Joost
* Add autarco to strict typing
* Update tests/components/autarco/test_config_flow.py
* Update tests/components/autarco/test_config_flow.py
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* feat: Add madvr envy
* fix: await and pass entry directly
* fix: add attributes and unique id for sensors
* fix: reflect power state well, improve state detection
* fix: don't connect on init, add options, add reload on change, keep on during test
* fix: cancel tasks on unload
* fix: test connection via library
* fix: wait for boot time
* docs: add readme and license
* fix: broken pipe in lib
* fix: detect out of band power off
* fix: improve extra attributes
* fix: fix unloading, add config flow test, limit to one platform
* fix: use conf, refresh coordinator, other comments
* fix: remove event data
* fix: fix tests passing, remove wake on lan
* fix: dont allow to proceed unless connection works
* chore: update dep
* fix: update config flow, add constants
* fix: write state, use runtime data instead
* fix: remove await
* fix: move unloading and stuff to coordinator/init
* fix: pass in config entry with correct type
* fix: move queue and tasks to library
* fix: config flow error flow, tests, name, and update lib
* fix: update lib, leave connection open on setup
* fix: update lib
* fix: address comments, remove wol from lib
* fix: remove unneeded options
* fix: remove fields
* fix: simplify code, address comments
* fix: move error to lib
* fix: fix test
* fix: stronger types
* fix: update lib
* fix: missing text from options flow
* chore: remove options flow
* chore: remove import
* chore: update comments
* fix: get mac from device, persist
* fix: add mac stuff to test
* fix: startup import errors
* chore: stale comment
* fix: get mac from persisted config
* chore: update lib
* fix: persist mac in a better way
* feat: use mac as unique ID for entry
* fix: use unique ID from mac, add proper device
* fix: will not be set in init potentially
* fix: access mac
* fix: optimize, move error to lib
* feat: add coordinator test, use conf
* fix: use one mock, add init test
* fix: not async
* feat: add remote test
* fix: types
* fix: patch client, expand remote tests
* fix: use snapshot test
* fix: update branding
* fix: add description, fix type check
* fix: update tests
* fix: test
* fix: update test
* fix: camelcase
* Fix
* feat: strict typing
* fix: strict typing in lib
* fix: type will never be None
* fix: reference to mac, all tests passing
---------
Co-authored-by: Joostlek <joostlek@outlook.com>
* Add APsystems local API integration
* Fix session usage in config_flow in apsystems local api
* Remove skip check option for apsystems_loca api
* Update APsystems API dependency and increased test coverage to 100%
* Utilize EntityDescriptions for APsystems Local integration
* Ensure coverage entries are sorted (#114424)
* Ensure coverage entries are sorted
* Use autofix
* Adjust
* Add comment to coverage file
* test CI
* revert CI test
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use patch instead of Http Mocks for APsystems API tests
* Fix linter waring for apsystemsapi
* Fix apsystemsapi test
* Fix CODEOWNERS for apsystemsapi
* Address small PR review changes for apsystems_local
* Remove wrong lines in coveragerc
* Add serial number for apsystems_local
* Remove option of custom refresh interval fro apsystems_local
* Remove function override and fix stale comments
* Use native device id and name storage instead of custom one for apsystems_local
* Use runtime_data for apsystems_local
* Don't store entry data in runtime data
* Move from apsystems_local to apsystems domain
---------
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Initial monzo implementation
* Tests and fixes
* Extracted api to pypi package
* Add app confirmation step
* Corrected data path for accounts
* Removed useless check
* Improved tests
* Exclude partially tested files from coverage check
* Use has_entity_name naming
* Bumped monzopy to 1.0.10
* Remove commented out code
* Remove reauth from initial PR
* Remove useless code
* Correct comment
* Remove reauth tests
* Remove device triggers from intial PR
* Set attr outside constructor
* Remove f-strings where no longer needed in entity.py
* Rename field to make clearer it's a Callable
* Correct native_unit_of_measurement
* Remove pot transfer service from intial PR
* Remove reauth string
* Remove empty fields in manifest.json
* Freeze SensorEntityDescription and remove Mixin
Also use list comprehensions for producing sensor lists
* Use consts in application_credentials.py
* Revert "Remove useless code"
Apparently this wasn't useless
This reverts commit c6b7109e47202f866c766ea4c16ce3eb0588795b.
* Ruff and pylint style fixes
* Bumped monzopy to 1.1.0
Adds support for joint/business/etc account pots
* Update test snapshot
* Rename AsyncConfigEntryAuth
* Use dataclasses instead of dictionaries
* Move OAuth constants to application_credentials.py
* Remove remaining constants and dependencies for services from this PR
* Remove empty manifest entry
* Fix comment
* Set device entry_type to service
* ACC_SENSORS -> ACCOUNT_SENSORS
* Make value_fn of sensors return StateType
* Rename OAuthMonzoAPI again
* Fix tests
* Patch API instead of integration for unavailable test
* Move pot constant to sensor.py
* Improve type safety in async_get_monzo_api_data()
* Update async_oauth_create_entry() docstring
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Adding a new "Ambient Weather Network" integration.
* Rebase and update code coverage.
* Addressed some reviewer comments.
* Remove mnemonics and replace with station names.
* Remove climate-utils
* Remove support for virtual stations.
* Rebase
* Address feedback
* Remove redundant errors
* Reviewer feedback
* Add icons.json
* More icons
* Reviewer feedback
* Fix test
* Make sensor tests more robust
* Make coordinator more robust
* Change update coordinator to raise UpdateFailed
* Recover from no station found error
* Dynamically set device name
* Address feedback
* Disable some sensors by default
* Reviewer feedback
* Change from hub to service
* Rebase
* Address reviewer feedback
* Reviewer feedback
* Manually rerun ruff on all files
* Integration for Energenie Power-Strips (EGPS)
* cleanups reocommended by reviewer
* Adds missing exception handling when trying to send a command to an unreachable device.
* fix: incorrect handling of already opened devices in pyegps api. bump to pyegps=0.2.4
* Add blank line after file docstring, and other cosmetics
* change asyncio.to_thread to async_add_executer_job
* raises HomeAssistantError EgpsException in switch services.
* switch test parameterized by entity name
* reoved unused device registry
* add translation_key and update_before_add
* bump pyegps dependency to version to 0.2.5
* combined get_device patches and put into conftest.py
* changed switch entity to use _attr_is_on and cleanups
* further cleanup
* Apply suggestions from code review
* refactor: rename egps to energenie_power_sockets
* updated test snapshot
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Add bangolufsen integration
* add untested files to .coveragerc
* Simplify integration to media_player platform
* Remove missing files from .coveragerc
* Add beolink_set_relative_volume custom service
Tweaks
* Remove custom services
Remove grouping as it was dependent on custom services
* Update API to 3.2.1.150.0
Reduce and optimize code with feedback from joostlek
Tweaks
* Updated testing
* Remove unused options schema
* Fix bugfix setting wrong state
* Fix wrong initial state
* Bump API
* Fix Beosound Level not reconnecting properly
* Remove unused constant
* Fix wrong variable checked to determine source
* Update integration with feedback from emontnemery
* Update integration with feedback from emontnemery
* Remove unused code
* Move API client into dataclass
Fix not all config_flow exceptions caught
Tweaks
* Add Bang & Olufsen brand
* Revert "Add Bang & Olufsen brand"
This reverts commit 57b2722078.
* Remove volume options from setup
Simplify device checks
rename integration to bang_olufsen
update tests to pass
Update API
* Remove _device from base
Add _device to websocket
* Move SW version device update to websocket
Sort websocket variables
* Add WebSocket connection test
* Remove unused constants
* Remove confirmation form
Make discovered devices get added to Home Assistant immediately
Fix device not being available on mdns discovery
Change config flow aborts to forms with error
* Update tests for new config_flow
Add missing api_exception test
* Restrict manual and discovered IP addresses to IPv4
* Re-add confirmation step for zeroconf discovery
Improve error messages
Move exception mapping dict to module level
* Enable remote control WebSocket listener
* Update tests
* First checkin for myUplink
* Refactored coordinator and sensor state classe
* Updated .coveragerc
* Update test_config_flow
* Fix test_config_flow for myuplink
* Only set state class for temperature sensor
* PR comment updates
* Type strong dict
* use asyncio.timeouts
* PR updates (part 1)
* Updated to myuplink 0.0.9
* Add strict typing
* Fix typing
* Inherit CoordinatorEntity
* Clean up coordinator and sensors
* Use common base entity
* Improve device point sensor
* Exclude entity from coverage
* Set device point entity name if there's no entity description
* Update homeassistant/components/myuplink/sensor.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/myuplink/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/myuplink/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remvoed firmware + connstate sensors
* Always add device point parameter name
* Removed MyUplinkDeviceSensor
* Removed unused class
* key="celsius",
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* 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 5ae5ae5392
* 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>
* 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>
* Enable strict typing of date_time
* Fix parse_datetime
* Add test
* Add comments
* Update tests/util/test_dt.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>