* Add Hong Kong Observatory integration
* Move coordinator to a separate file
* Map icons to conditions
* Fix code for review
* Skip name
* Add typings to data_coordinator
* Some small fixes
* Rename coordinator.py
* Add response to python_script
* Reset output to empty dict if not valid dict
* Add tests for python_script response
* Raise Exceptions on service execution
* Add info on exception type
* Raise ServiceValidationError instead of ValueError
* Raise only on return_response=True
* Fix exception logger if no service response
* Create issue if exception is not raised
* Revert "Create issue if exception is not raised"
This reverts commit a61dd8619fdf09585bbd70e1392d476f3fcea698.
---------
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
* Add ServiceResponse to rest_command
* Handle json and text responses.
Add Unit tests
* Rest command text output handling.
Prevent issue solved by PR#97777
* Re-raise exceptions as HomeAssistantError to enable 'continue_on_error' in scripts / automations.
* Improve test coverage
* Restructure to improve McCabe Complexity
* Remove LookupError
* Revert exception catching location
* Remove LookupError from exception handling
* 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>
* Add sensor tests to Streamlabs water
* Add sensor tests to Streamlabs water
* Use entity descriptions in streamlabs water
* Use entity descriptions in streamlabs water
* Use entity descriptions in streamlabs water
* Add translations
* Issue warning if glances server version is 2
* Auto detect api version
* Apply suggestions
* Add HA version deprecation
* Apply suggestions from code review
* update config flow tests
* Fix breaks in ha version
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
In the case where the user gets their first ESPHome device such as a RATGDO,
they will usually add the device first in HA, and than find the dashboard.
The install function will be missing because we do not know if the dashboard
supports updating devices until the first device is added. We now set the
supported features when we learn the version when the first device is added
* Fix ESPHome service removal when the device name contains a dash
If the device name contains a dash the service name is mutated to
replace the dash with an underscore, but the remove function did
not do the same mutation so it would fail to remove the service
* add more coverage
* more cover
* add placeholder support to entity name translation
* add negativ tests
* make property also available via description
* fix doc string in translation_placeholders()
* fix detection of placeholder
* validate placeholders for localized strings
* add test
* Cache translation_placeholders property
* Make translation_placeholders uncondotionally return dict
* Fall back to unsubstituted name in case of mismatch
* Only replace failing translations with English
* Update snapshots
* Blow up on non stable releases
* Fix test
* Update entity.py
---------
Co-authored-by: Erik <erik@montnemery.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>