* Create component via script.scaffold
* Create sensor definition
* Define coordinator
* Define config flow
* Refine sensor definition and add tests
* Refine coordinator after testing end to end
* Redefine sensor in a more idiomatic way
* Use entity (common-module)
* Follow config-flow conventions more closely
* Use custom ConfigEntry to conform to strict-typing
* Define API object instead of using aio directly
* Test before setup in init
* Add diagnostics
* Make some more quality changes
* Move scan interval to const
* Commit generated files
* Add quality scale
* feedback: Apply consistent language to Tilt Pi refs
* feedback: Remove empty manifest fields
* feedback: Use translations instead of hardcoded name
* feedback: Remove diagnostics
* feedback: Idiomatic and general improvements
* Use tilt-pi library
* feedback: Coordinator data returns dict
* feedback: Move client creation to coordinator
* feedback: Request only Tilt Pi URL from user
* Update homeassistant/components/tilt_pi/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update homeassistant/components/tilt_pi/sensor.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update homeassistant/components/tilt_pi/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* feedback: Avoid redundant keyword arguments in function calls
* feedback: Remove unused models and variables
* feedback: Use icons.json
* feedback: Style best practices
* Update homeassistant/components/tilt_pi/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Update tests/components/tilt_pi/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* feedback: Improve config flow unit tests
* feedback: Patch TiltPi client mock
* feedback: Mark entity-device-class as done
* feedback: Align quaity scale with current state
* feeback: Create brands file for Tilt brand
* feedback: Demonstrate recovery in config flow
* feedback: Test coordinator behavior via sensors
* Update homeassistant/components/tilt_pi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/tilt_pi/coordinator.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/tilt_pi/quality_scale.yaml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/tilt_pi/quality_scale.yaml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/tilt_pi/quality_scale.yaml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/tilt_pi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* feedback: Update tilt_pi quality scale
* feedback: Move const to coordinator
* feedback: Correct strings.json for incorrect and missing fields
* feedback: Use tiltpi package version published via CI
* Run ruff format manually
* Add missing string for invalid host
* Fix
* Fix
---------
Co-authored-by: Michael Heyman <michaelheyman@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Add Google Drive integration for backup
* Add test_config_flow
* Stop using aiogoogle
* address a few comments
* Check folder exists in setup
* fix test
* address comments
* fix
* fix
* Use ChunkAsyncStreamIterator in helpers
* repair-issues: todo
* Remove check if folder exists in the reatuh flow. This is done in setup.
* single_config_entry": true
* Add test_init.py
* Store into backups.json to avoid 124 bytes per property limit
* Address comments
* autouse=True on setup_credentials
* Store metadata in description and remove backups.json
* improvements
* timeout downloads
* library
* fixes
* strings
* review
* ruff
* fix test
* Set unique_id
* Use slugify in homeassistant.util
* Fix
* Remove RefreshError
* review
* push more fields to the test constant
---------
Co-authored-by: Joostlek <joostlek@outlook.com>
* 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 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>