* Add simple battery sensor
* Add test for battery sensor based on a real device
* Vary icon based on battery state
* Add test for battery sensory
* Read other battery related states from accessory
* Add a device class to the battery sensor
* Respect the low battery flag from the device
* Fixed logger name to allow selective logging
* Fixed thermostat mode ('off' and 'heat' modes were not consistent with Eurotronic Spirit Zigbee Thermostat state) and added 'auto' to supported mode
* Added required blank lines in code
* Black formatting
* Revert logging code added to each files. Instead, only replaced "." by __package__ in const.py
* Added a test on self._device.state_on to determine hvac_mode
* Black formatting
* Added debug message when unsupported hvac_mode is encountered
* Applied formatting recommandations
* Updated tests for 'auto' hvac_mode
* Add two new methods to the OpenUV component that consume only a single API call
* Two lines after class
* Rename methods to better reflect what they do, and DRY copy and pasted code
* More error handling down into methods, run api calls in parallel
* Fix import order
* Add new methods to services.yaml, and update error messages
* Add tests for androidtv
* Test that the error and reconnection attempts are logged correctly.
> "Handles device/service unavailable. Log a warning once when
> unavailable, log once when reconnected."
https://developers.home-assistant.io/docs/en/integration_quality_scale_index.html
* Clarify comment
* Add test for when the ADB shell command returns None
* Bump androidtv to 0.0.25
* Enable cert_expiry config entries
* add black
* lint fixes
* Rerun black
* Black on json files is a bad idea
* Work on comments
* Forgot the lint
* More comment work
* Correctly set defaults
* More comments
* Add codeowner
* Fix black
* More comments implemented
* Removed the catch
* Add helper.py from cert_expiry to .coveragerc
* get single device web socket command
* test get single device
* add not found error
* fix handling when device doesn't exist
* add test for zha device not found
I was getting the following error when i set the scan_interval
```
self.scan_interval = timedelta(seconds=config.get(CONF_SCAN_INTERVAL, 60))
TypeError: unsupported type for timedelta seconds component: datetime.timedelta
```
it turns out `config.get(CONF_SCAN_INTERVAL)` already returns `timedelta`
```('scan_interval', datetime.timedelta(seconds=180))```
* Speed up history `get_states`
Adding a boundary of the start of the recorder run the point is in, significantly increases the time of the query. This speeds up the fetching of the history of 1 entity.
* Make single entity query easier
no need for joins with single entity
* Lint
I was getting the following error when i set the scan_interval
```
self.scan_interval = timedelta(seconds=config.get(CONF_SCAN_INTERVAL, 60))
TypeError: unsupported type for timedelta seconds component: datetime.timedelta
```
it turns out `config.get(CONF_SCAN_INTERVAL)` already returns `timedelta`
```('scan_interval', datetime.timedelta(seconds=180))```
* Add nws weather.
* Hassfest
* Address multiple comments
* Add NWS icon weather code link
* Add metar fallback.
Use metar code from nws observation if normal api is missing data.
* only get 1 observation - we dont use more than 1
* add mocked metar for tests
* lint
* mock metar package for all tests
* add check for metar attributes
* catch errors in setup
* add timeout error
* handle request exceptions
* check and test for missing observations
* refactor to new pynws
* change to simpler api
* Make py3.5 compatible
Remove f string
* bump pynws version
* gen_requirements
* fix wind bearing observation
* Revert "Make py3.5 compatible"
This reverts commit 4946d91779.
* Precommit black missed a file?
* black test
* add exceptional weather condition
* bump pynws version
* update requirements_all
* address comments
* move observation and forecast outside try-except-else
* Revert "move observation and forecast outside try-except-else"
This reverts commit 53b78b3283.
* remove else from update forecast block
* remove unneeded ConfigEntryNotReady import
* add scan_interval, reduce min_time_between_updates
* pytest tests
* lint test docstring
* use async await
* lat and lon inclusive in config
* define success for all branches
* add operation_mode to error when unexpected value
* fix black linting
* black linting
* fix weird black linting result
* Load user-provided descriptions for python_scripts
* Import SERVICE_DESCRIPTION_CACHE
* Use async_set_service_schema to register service descriptions
* Add python_script tests for loading service descriptions
* Use async/await in test
* Load user-provided descriptions for python_scripts
* Import SERVICE_DESCRIPTION_CACHE
* Use async_set_service_schema to register service descriptions
* Add python_script tests for loading service descriptions
* Use async/await in test
* Add descriptive fields to script config
* Add script descriptions to hass.data["service_description_cache"]
* Import SERVICE_DESCRIPTION_CACHE
* Register script descriptions via async_set_service_schema
* Add scripts test for loading and reloading service descriptions
* Minor cleanup
* Clean up script schema
* Added attribute support to template binary sensor with tests
Added attribute support to template binary sensor with tests
* fix dictionary update
fix dictionary update
* Fixed whitespace and line length issues
* Fixed indentation
* Simplify applying of attribute templates based on feedback
* Syntax and whitespace fixes
* Black formatting
* Black formatting on tests
* Check attribute_templates is not None
* Fixed test
* Added test for failure to render template
* Test fix
* Updated test
* Removed whitespace and applied Black formatting
* Fixed test assertion
* Updated test
* Code improvements folloing comments
Using chain to iterate over templates and attribute_templates
Replacing dict() with {}
Rmoving unused constant
* Applied Black formatting
* Fixed removed code
* Default attribute_templates to empty dict
* Black formatting
* Fixed imports
* Add handling for Sonos playlists in media_player.play_media
* Avoid breaking change by falling back to previous behavior
* Use the proper MEDIA_TYPE_PLAYLIST constant.
* Addressed comments, restricting media_type to music or playlist
* Add path option to SABnzbd component
Adds an optional `path` setting to the SABnzbd component. This allows support for SABnzbd installs that use a different `url_base` (typically a reverse proxied configuration; see https://sabnzbd.org/wiki/configuration/2.3/special).
This change passes the `path` along to pysabnzbd as its `web_root`, which in turn uses the path to build up it's api URLs.
* Use dict.get for Sabnzbd web_root path config
* Add Keba charging station wallbox component
* Added start/stop commands (ena 0 and ena 1)
* added refresh_interval parameter and fixed authorization
* fixed max line length
* deactivate failsafe mode if not set in configuration
* extracted I/O code to pypi library
* updated services.yaml
* pinned version of requirements
* fixed typos, indent and comments
* simplified sensor generation, fixed unique_id and name of sensors
* cleaned up data extraction
* flake8 fixes
* added fast polling, fixed unique_id, code cleanup
* updated requirements
* fixed pylint
* integrated code styling suggestions
* fixed pylint
* code style changes according to suggestions and pylint fixes
* formatted with black
* clarefied variables
* Update homeassistant/components/keba/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* Update homeassistant/components/keba/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* Update homeassistant/components/keba/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* Update homeassistant/components/keba/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* fixed behaviour if no charging station was found
* fix pylint
* Update homeassistant/components/keba/__init__.py
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
Changed the logging level for the polling of the fritz device tracker from info to debug. The message was logged up to 6 times per minute and bloated the log file.
* Bump env_canada to 0.0.21
* Add timestamp attribute to camera
* Bump env_canada to 0.0.23
* Clean up displayed values
* Validate radar station code
* Bump env_canada to 0.0.24
* Black
* Remove default "None" from sensor
* Switch to cv.matches_regex
I think I was thinking in another language, since this was not valid Python. Result was that the thread that maintained the SocketIO connection to the table would die early on, so no status updates were actually flowing from the table.
We only want to force a query if we don't have any previous state.
Otherwise, we should be tracking the state via continuous status
updates.
For lights (not switches) the extra query was also superfluous since
it was already querying on startup.
We should probably have a timeout on that so at some point we'll
requery in case remote end disconnected/rebooted, etc. Leaving for
another PR.
* add broadlink switch retry time in configuration
* add broadlink switch retry time in configuration
* formatted code by black tool
* Change retry default value to 2 to keep the current behavior
The python-openzwave API which provides the implementation of the config update
does not actually work in the homeassistant fork. To avoid confusion, remove
the service call for now.
* Add volumio shuffle support
* Black reformat
* Update homeassistant/components/volumio/media_player.py
Co-Authored-By: Martin Hjelmare <marhje52@kth.se>
* Tado AIR_CONDITIONING module was not working propertly
AIR_CONDITIONING modules differs from HEATING module int he parameters.
* Tado Cooling Sensor was not read proprtly
* TADO correct file permissions
* Tado: Fix compilation error
* Fix Lint errors
* Fix Black formatting
* TADO More AC functionality
Also Black formatting
* Tado Fix Lint
* Tado Fix Lint II