* Initial commit for VegeHub integration
* Moved several pieces to library, continuing.
* All device contact moved to library
* Updated documentation link
* Fixed an error in strings.json
* Removed commented out code and unused file
* Removed unneeded info logging, and a few missed lines of commented code
* Added/removed comments for clarity
* Converted integration to use webhooks.
* Update __init__.py to remove unnecessary code.
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove unnecessary code from config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Simplify unique_id assertion.
* Switch to CONF_ constant for user input
* Added explanation for passing exception.
* Got rid of try-except, since I don't really handle the exceptions her anyway.
* Moved data transform to vegehub library
* Changed references to use HA constants.
* Fixed assigning and returning _attr properties.
* Moved temperature sensor transform to the library.
* Moved sensor names to strings.json
* Made webhook names unique to avoid collisions when multiple devices are added.
* Converted to using entry.runtime_data
* Removed options flow for first PR
* Removed switch support to limit PR to one platform
* Removed/updated outdated tests
* Update homeassistant/components/vegehub/__init__.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Got rid of strings in favor of constants.
* Got rid of unnecessary check
* Imported constant directly.
* Added custom type for entry
* Expanded CONF_ constants into sensor.py
* Get rid of extra `str` and `get`
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Added type to errors
* Added try/except to MAC address retrieval
* Moved functionality out of ConfigFlow that shouldn't have been there
* Removed IP:MAC tracking from ConfigFlow
* Added retries to VegeHub PyPI package, and implemented them in integration
* Removed different sensor types for now
* Fixed typo
* Changed abort to error
* Fixed error reporting in config flow
* Further simplify sensor.py to handle all sensors the same
* Added comment to clarify
* Got rid of unused constants
* Removed unused strings in strings.json
* Added quality_scale.yaml
* Fixed problems in sensor init
* Moved config url and sw version storage into vegehub package
* Get rid of extra declaration
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Removed unnecessary task
* Fix type for entry
* Added a test before setup
* Fixed tests and got test coverage of config flow to 100%
* Fixed test descriptions
* Implemented a coordinator
* Removed unused property
* Fixed a few minor issues with the coordinator implementation
* Removed unused function
* Fixed some tests
* Trying to fix a problem with re-initialization when server reboots. Mostly working.
* Moved hub.setup from async_setup_entry to config flow to avoid running it on system reboot
* Delete tests/testing_config/.storage/http.auth
* Fixed errors in coordinator.py
* Added IP validation for manual input IP addresses
* Moved data into self._discovered to simplify
* Removed redundant typing
* Shortened sensor unique ID and added coordinator handler
* Added call to super()._handle_coordinator_update() so state gets handled correctly
* Fixed == and is
* Got rid of "slot" and moved functionality to lib
* Got rid of mocked aiohttp calls in favor of just mocking the vegehub library
* Rewrote config flow to make more sense.
* Changed order of data and data_description
* Changes to sensor.py
* Got rid of async_update_data in coordinator and moved async_set_updated_data into webhook callback
* Changed sensor updates so that they keep using last known values if update doesn't contain data for them
* Changed config flow to use homeassistant.helpers.service_info zeroconf instead of homeassistant.components zeroconf
* Added types to test parameters
* Changes and notes in config_flow.py
* Minor fix to get existing tests working before making changes to tests
* Removed unused data and simplified data passing
* Fixed tests, removed unused data, moved sensor tests to snapshots
* Mocked async_setup_entry and async_unload_entry
* Eliminated retry step so that retries just happen in the user flow or zeroconf_confirm
* Bumped the library version
* Bumped library version again
* Changed test-before-setup test
* Improved use of coordinator
* Almost done reworking tests. A few more changes still needed.
* Added via device to sensor.py and key reference to strings.json
* Webhook tests are almost, but not quite, working
* Fully functional again
* Change error to assert
* made identifiers and via_device the same
* made the via_device just be the mac
* Fixed strings.json and updated translations
* Fixed test_sensor.py
* Cleaned up tests and added autouse to several fixtures to simplify
* Switched from error to assert, and added exemption to quality scale.
* Cleaned up some tests and added update of IP if unique ID of discovered device is the same.
* Improved zeroconfig to update IP and hostname, and added a test to make sure those work.
* Fixed a comment.
* Improved ip/hostname update test.
* Changed Hub to VegeHub in strings.json for clarity.
* Switched to using a base entity to simplify and make adding platforms in the future easier.
* Moved the vegehub object into the coordinator to simplify.
* Removed actuators from sensors, and added unique name for battery sensor
* Changed coordinator to manage its own data, changed sensors to use descriptions and return their value as a property
* Updated data retrieval keys
* Minor updates to several files
* Fixed a few things for pytest
* Reverted to explicit check for None for pytest
* Fixed a comment and a variable name
* Fixed a comment
* Fix
* Bumped depenency version to eliminate pytest from dependencies.
---------
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joostlek <joostlek@outlook.com>
* add altruist integration and tests
* requested fixes + remove some deprecated sensors
* add tests for unknown sensor and device attribute in config_flow
* use CONF_ in data_schema
* suggested fixes
* remove test_setup_entry_success
* create ZeroconfServiceInfo in tests
* use CONF_IP_ADDRESS in tests
* add unique id assert
* add integration to strict-typing, set unavailable if no sensor key in data, change device name
* use add_suggested_values_to_schema, mmHg for pressure
* update snapshots and config entry name in tests
* remove changes in devcontainer config
* fixture for create client error, typing in tests, remove "Altruist" from device name
* change native_value_fn return type
* change sensor.py docstring
* remove device id from entry data, fix docstrings
* remove checks for client and device attributes
* use less variables in tests
* change creating AltruistSensor, remove device from arguments
* Update homeassistant/components/altruist/sensor.py
* Update homeassistant/components/altruist/quality_scale.yaml
* Update homeassistant/components/altruist/quality_scale.yaml
* Update quality_scale.yaml
* hassfest run
* suggested fixes
* set suggested_unit_of_measurement for pressure
* use mock_config_entry, update snapshots
* abort if cant create client on zeroconf step
* move sensor names in translatin placeholders
---------
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Add Lektrico Integration
* Make the changes proposed by Lash-L: new coordinator.py, new entity.py; use: translation_key, last_update_sucess, PlatformNotReady; remove: global variables
* Replace FlowResult with ConfigFlowResult and add tests.
* Remove unused lines.
* Remove Options from condif_flow
* Fix ruff and mypy.
* Fix CODEOWNERS.
* Run python3 -m script.hassfest.
* Correct rebase mistake.
* Make modifications suggested by emontnemery.
* Add pytest fixtures.
* Remove meaningless patches.
* Update .coveragerc
* Replace CONF_FRIENDLY_NAME with CONF_NAME.
* Remove underscores.
* Update tests.
* Update test file with is and no config_entries. .
* Set serial_number in DeviceInfo and add return type of the async_update_data to DataUpdateCoordinator.
* Use suggested_unit_of_measurement for KILO_WATT and replace Any in value_fn (sensor file).
* Add device class duration to charging_time sensor.
* Change raising PlatformNotReady to raising IntegrationError.
* Test the unique id of the entry.
* Rename PF Lx with Power factor Lx and remove PF from strings.json.
* Remove comment.
* Make state and limit reason sensors to be enum sensors.
* Use result variable to check unique_id in test.
* Remove CONF_NAME from entry and __init__ from LektricoFlowHandler.
* Remove session parameter from LektricoDeviceDataUpdateCoordinator.
* Use config_entry: ConfigEntry in coordinator.
* Replace Connected,NeedAuth with Waiting for Authentication.
* Use lektricowifi 0.0.29.
* Use lektricowifi 0.0.39
* Use lektricowifi 0.0.40
* Use lektricowifi 0.0.41
* Replace hass.data with entry.runtime_data
* Delete .coveragerc
* Restructure the user step
* Fix tests
* Add returned value of _async_update_data to class DataUpdateCoordinator
* Use hw_version at DeviceInfo
* Remove a variable
* Use StateType
* Replace friendly_name with device_name
* Use sentence case in translation strings
* Uncomment and fix test_discovered_zeroconf
* Add type LektricoConfigEntry
* Remove commented code
* Remove the type of coordinator in sensor async_setup_entry
* Make zeroconf test end in ABORT, not FORM
* Remove all async_block_till_done from tests
* End test_user_setup_device_offline with CREATE_ENTRY
* Patch the full Device
* Add snapshot tests
* Overwrite the type LektricoSensorEntityDescription outside of the constructor
* Test separate already_configured for zeroconf
---------
Co-authored-by: mihaela.tarjoianu <mihaela.tarjoianu@scada.ro>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Deako integration using pydeako
* fix: address feedback
- make unit tests more e2e
- use runtime_data to store connection
* fix: address feedback part 2
- added better type safety for Deako config entries
- refactored the config flow tests to use a conftest mock instead of directly patching
- removed pytest.mark.asyncio test decorators
* fix: address feedback pt 3
- simplify config entry type
- add test for single_instance_allowed
- remove light.py get_state(), only used once, no need to be separate function
* fix: ruff format
* Update homeassistant/components/deako/__init__.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Initial SMLIGHT integration
Signed-off-by: Tim Lunn <tl@smlight.tech>
* Generated content
Signed-off-by: Tim Lunn <tl@smlight.tech>
* Cleanup LOGGING
* Use runtime data
* Call super first
* coordinator instance attributes
* Move coordinatorEntity and attr to base class
* cleanup sensors
* update strings to use sentence case
* Improve reauth flow on incorrect credentials
* Use fixture for config_flow tests and test to completion
* Split uptime hndling into a new uptime sensor entity
* Drop server side events and internet callback
will bring this back with binary sensor Platform
* consolidate coordinator setup
* entity always include connections
* get_hostname tweak
* Add tests for init, coordinator and sensor
* Use custom type SmConfigEntry
* update sensor snapshot
* Drop reauth flow for later PR
* Use _async_setup for initial setup
* drop internet to be set later
* sensor fixes
* config flow re
* typing fixes
* Bump pysmlight dependency to 0.0.12
* dont trigger invalid auth message when first loading auth step
* Merge uptime sensors back into main sensor class
* clarify uptime handling
* Apply suggestions from code review
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* address review comments
* pass host as parameter to the dataCoordinator
* drop uptime sensors for a later PR
* update sensor test snapshot
* move coordinator unique_id to _async_setup
* fix CI
* Apply suggestions from code review
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* drop invalid_auth test tag
* use snapshot_platform, update fixtures
* Finish all tests with abort or create entry
* drop coordinator tests and remove hostname support
* add test for update failure on connection error
* use freezer for update_failed test
* fix pysmlight imports
---------
Signed-off-by: Tim Lunn <tl@smlight.tech>
Co-authored-by: Tim Lunn <tim@feathertop.org>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add matter during onboarding
* test_zeroconf_not_onboarded_running
* test_zeroconf_not_onboarded_installed
* test_zeroconf_not_onboarded_not_installed
* test_zeroconf_discovery_not_onboarded_not_supervisor
* Clean up
* Add udp address
* Test zeroconf udp info too
* test_addon_installed_failures_zeroconf
* test_addon_running_failures_zeroconf
* test_addon_not_installed_failures_zeroconf
* Clean up stale changes
* Set unique id for discovery step
* Fix tests for background flow
* Fix flow running in background
* Test already discovered zeroconf
* Mock unload entry
* Add support for local (lan) panel integration
* Fix merge conflicts
* Remove executable flag from non-executable files
* Fix tests
* Update homeassistant/components/elmax/__init__.py
Shorten comment
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix typehint
* Rename DummyPanel into DirectPanel
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Refactor option step into menu step
* Change requirement statement
* Refactor dictionary key entries to use existing constants
* Align step names to new constants
* Align step names to new constants amd align tests
* Align step names to new constants amd align tests
* Align step names to new constants
* Simplify logic to handle entire entry instead of a portion of the state
* Simplify working mode checks
* Add data_description dictionary to better explain SSL and FOLLOW_MDSN options
* Add support for local (lan) panel integration
* Fix merge conflicts
* Remove executable flag from non-executable files
* Fix tests
* Update homeassistant/components/elmax/__init__.py
Shorten comment
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix typehint
* Rename DummyPanel into DirectPanel
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Update homeassistant/components/elmax/__init__.py
Rewording
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Refactor option step into menu step
* Change requirement statement
* Refactor dictionary key entries to use existing constants
* Align step names to new constants
* Align step names to new constants amd align tests
* Align step names to new constants amd align tests
* Align step names to new constants
* Simplify logic to handle entire entry instead of a portion of the state
* Simplify working mode checks
* Add data_description dictionary to better explain SSL and FOLLOW_MDSN options
* Add newline at end of file
* Remove CONF_ELMAX_MODE_DIRECT_FOLLOW_MDNS option
* Fix Ruff pre-check
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>