* 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>
* 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>
* Changed setup of energyzero services
* PR review updates
* Dict access instead of get
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Added tests for unloaded state
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* media_extractor comp -> add support for cookie file
* Update __init__.py
* Update __init__.py
* fixed pr request, added test
* update test with valid cookie file
* move cookies to subdirectory
* use pathlib instead of os.path
* Use device name to lookup camera
* Fix device registry serial
* Move to entity based services
* Update tests
* Use config_entry
Move refresh service out of camera
* Use config entry for services
* Fix service schema
* Add depreciation note
* Depreciation note
* key error changes
deprecated (not depreciated)
repair issue
* tweak message
* deprication v2
* back out update field change
* backout update schema changes
* Finish rollback on update service
* update doc strings
* move to 2024.7.0
More verbosity to deprecation message
* Add a switch to enable and disable "Color Night Vision" for the Unifi Protect platform, which is a feature on the new G5 Pro cameras with a "Vision Enhancer" attached
* Updated tests for the new switch
* Add query type validation independent of declaration position
* Restore close sess
* Separates invalid query and non-read-only query tests
* Add more tests
* Use the SQLParseError exception for queries that are not read-only
* Add handling for multiple SQL queries.
* Fix test
* Clean ';' at the beginning of the SQL query
* Clean ';' at the beginning of the SQL query - init
* Query cleaning before storing
* Query cleaning before setup sesensor plataform - YAML
* Exception when the SQL query type is not detected
* Cleaning
* Cleaning
* Fix typing in tests
* Fix typing in tests
* Add test for query = ';;'
* Update homeassistant/components/sql/__init__.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update homeassistant/components/sql/__init__.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update __init__.py
* Update config_flow.py
* Clean query before storing
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* initial
* fix tests
* match on specific name and quirk name
* fix tests
* fix tests
* store cluster handlers in only one place
* edit tests
* use correct device for quirk id
* change quirk id
* fix tests
* even if there is a quirk id, it doesn't have to have a specific cluster handler
* add tests
* rename quirk_id
* add tests
* fix tests
* fix tests
* use quirk id from zha_quirks
* Don't update entities until they are initialized
* fix hass reference
* only establish polling once
* fix log level and small cleanup
* start device availability checks after full initialization of network
* add logging
* clean up sensor polling and class hierarchy
* don't attempt restore sensor cleanup in this PR
* put check back
* fix race condition and remove parallel updates
* add sensor polling test
* cleanup switch polling and add a test
* clean up and actually fix race condition
* update light forced refresh
* only use flag
* unused flag
* reduce diff size
* collapse
Original design relied on aioairq.AirQ.__init__ checking if the input
was a valid IP address or an mDNS of a very specific structure,
and raising an InvalidInput otherwise.
Now, aioairq==0.3.2 removes said check completely following a user's
request to allow arbitrary host name and DNS entries.
In the config flow, "cannot_connect" covers the cases of misspelled
inputs now, which previously were covered by a dedicated "invalid_input"
* Add name back to device tracker and lock
* Add name to media player
* Add name to update
* Update snapshot
* Keep none name on Update
* Re-add update
* Decouple climate from MyFan
* Add tests
* Prepare for auto change
* Handle both modes
* Fix import
* Remove reference to FAN map
* Correct auto fan logic
* Remove multiline ternary operator
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Fix coverage
* fix tests
* ruff
* Test auto fan mode with snapshot
* add more testing
* Add switch testing
* Fix a bug caught by new tests
* Remove ineffective snapshot tests
* Readd snapshots but use args
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Add foot warmer support
* Add Tests for foot warmers
* Move attr options out of constructor
* Change options to lowercase
* Update test and translations
* Switch back to entity
* Update homeassistant/components/sleepiq/strings.json
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add config flow to Streamlabs water
* Add config flow to Streamlabs water
* Add config flow to Streamlabs water
* Add issue when import is successful
* Remove import issue when entry already exists
* Remove import issue when entry already exists
* Fix feedback
* Fix feedback
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* initial work on alarm
* final work on alarm
* coveragerc
* add tests
* add code validation
* remove sensor changes for a dedicated PR
* code optimization and cleanup
* tweaks
* tweak #2
* apply suggestion
* code quality
* code quality #2
* fix cover.py
* api typing
* use base classes where possibile
* apply const as per review comment
* cleanup unload entry
* apply review comments
* Add config flow to Netgear LTE
* uno mas
* uno mas
* forgot one
* uno mas
* uno mas
* apply suggestions
* tweak user step
* fix load/unload/dep
* clean up
* fix tests
* test yaml before importing
* uno mas
* uno mas
* uno mas
* uno mas
* uno mas
* fix startup hanging
* break out yaml import
* fix doc string
---------
Co-authored-by: Robert Resch <robert@resch.dev>
* Add debouncer
* Avoid having 3 calls
* Debounce causes extra refresh in reload window
* Seperate disabled test to avoid latent refresh
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Add select platform to drop_connect integration
* Fix select test
* Fix minor issues
* Make function definition more specific
* Revert change to switch.py for inclusion in separate PR
* Improve typing
* Add translation keys for select options
* Fix set function typing
* Remove redundant value check
* Remove args that match defaults
* Add diagnostics to ccm15
* Update homeassistant/components/ccm15/diagnostics.py
Co-authored-by: J. Nick Koston <nick@koston.org>
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add energy usage sensor to A. O. Smith integration
* Address review comments
* Address review comment
* Address review comment
* Create device outside of the entity class
* Address review comment
* remove platinum
* Add switches to drop_connect integration
* Let device update state
* Simplify icon property
* Use constants for icon names
* Add simulated responses from devices
* Use keyed form for switch value
* Clean up properties
* Fix mqtt valve is not resetting opening or closing state
* Require state or position attr in JSON state update
* Do not change `_attr_is_closed` if valve reports a position
* Add comment, use tuple
* Call _update_state
* 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
* Add media platform
* Add more props
* Fix platform filename
* Working
* Add a test
* Update test and fixture
* Refactor media player properties to handle null values
* Add comments
* add more assertions
* Fix test docstring
* Use walrus instead.
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Test when media player is idle
* Fix tests
* Remove None type from volume_level
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Return media position only when a media duration is > 0
* Remove impossible None type
* Add snapshot and freezer
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* 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
* Add number platform
* Make self.set consistent
* Fix test docstring
* Use entity descriptions
* Add patch_description to tests
* Rename argument to arg
* Make max key mandatory
* Set SOC min to normal value
* add config flow
* unit tests
* yaml config import flow
* change deprecation period and simply code
* keep name for legacy yaml
- removing the name now would break current implementations
- it will be removed together with the deprectation of yaml config flow
* improve error handling, simpler unique_id, cleanup
* simplify issues for yaml import flow
* improve typing and clean name handling
* streamline unit tests
- happy path + errors
- mock opendata instead of aiohttp
* parametrize unit tests
* improve strings
* add missing aborts
* update coverage ignore
* remove redundant test
* minor clean up of constants
* Improve performance of dhcp on high activity networks
Most of the overhead was constructing IPAddress objects
which is solved with https://github.com/bdraco/cached-ipaddress
* fix test
* fix: bump
* bump again
* lets do it on the correct branch
* Migrate cloud stt to config entry
* Update default engine
* Test config flow
* Migrate pipelines with cloud stt engine to new engine id
* Fix test after rebase
* Update and add comment
* Remove cloud specifics from default stt engine
* Refactor cloud assist pipeline
* Fix cloud stt entity_id
* Try to wait for platforms before creating default pipeline
* Clean up import
* Move function in cloud assist pipeline
* Wait for tts platform loaded in stt migration
* Update deprecation dates
* Clean up not used fixture
* Add test for async_update_pipeline
* Define pipeline update interface better
* Remove leftover
* Fix tests
* Change default engine test
* Add test for missing stt entity during login
* Add and update comments
* Update config entry title
* Add version platform
* Add strings and test
* Remove potential for None
* Dont show progress when no update is running
* Return None for no update
* Add comment
* Remove future feature
* WIP
* Fix statuses
* update fixture
* Remove entity name
* Remove name correctly
* Use False for in_progress
* Migrate google related tests to use freezegun
* retrigger CI
* Fix google tests
* Add timezone to config_entry_token_expiry
* Separate config_entry_token_expiry from token_expiry
* Also test token refresh for offset-naive tokens
* retrigger CI
* Apply code review suggestion
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Run ruff-format
---------
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Add climate platform
* Other fixes
* Use super native value
* change to _value
* Sentence case strings
* Add some more type definition
* Add return types
* Add some more assertions
* Remove VirtualKey error
* Add type to args
* rename climate to primary
* fix min max
* Use String Enum
* Add PRECISION_HALVES
* Fix string enum
* fix str enum
* Simplify run logic
* Rename enum to TessieClimateKeeper