* BUGFIX: add support for extra fan speeds.
* Drop extra fan speeds.
Remove catch all, drop missing fan speeds.
* fix self.speed_synonyms call. Remove un-needed keys() call
* Add support for Mode trait in Google Assistant.
* Simplify supported logic.
* Fix SUPPORTED_MODE_SETTINGS to correct rip failures.
* more stray commas
* update tests.
Add the following sensors that provide interesting data when using a variable speed geothermal system:
* Compressor Power
* Fan Power
* Aux Power
* Loop Pump Power
* Compressor Speed
* Fan Speed
* Fix statistics for binary sensor
-) Binary sensors have 'on' and 'off' for state resulting in issue as numbers were expected. Fixed so that it works with non-numeric states as well.
-) Added check to skip unknown states.
-) Updates test so that binary sensor test will use non-numeric values for states.
* Using guard clause and changed debug to error
Changed to use a guard clause for state unknown.
Writing error on value error instead of debug.
* Add docstring
* Restore states through a JSON store
* Accept entity_id directly in restore state helper
* Keep states stored between runs for a limited time
* Remove warning
* Moved stop method and registering outside of init
Moved the cleanup to a seperate method and perform registering for the event in setup.
* Removed use of global variable
Removed use of global variable.
* Removed API_SESSIONS
Removed unused declaration API_SESSIONS.
* Enable Google Assistant OnOffTrait for climate devices that support them
This commit enables the OnOffTrait for climate devices that have the SUPPORT_ON_OFF feature. I have tested this locally with a Sensibo device which supports ON_OFF and a nest device that does not.
* Update trait.py
* Add tests for onoff_climate
* Add OnOff trait to climate.heatpump
* Add on status to heatpump in google_assistant tests
* code cleanup to make use of new externalised feed manager
* fixed lint
* revert change, keep asynctest
* using asynctest
* changed unit test from mocking to inspecting dispatcher signals
* code clean-up
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
* Add cloud webhook support
* Simplify payload
* Add cloud http api tests
* Fix tests
* Lint
* Handle cloud webhooks
* Fix things
* Fix name
* Rename it to cloudhook
* Final rename
* Final final rename?
* Fix docstring
* More tests
* Lint
* Add types
* Fix things
* Use asyncio Lock for fibaro light
* line length and empty line at end
* async turn_off
Turned the turn_off into async as well
* bless you, blank lines...
My local flake8 lies to me. Not cool.
* Add permission checks to Rest API
* Clean up unnecessary method
* Remove all the tuple stuff from entity check
* Simplify perms
* Correct param name for owner permission
* Hass.io make/update user to be admin
* Types
* Fix false log message on CAPsMAN only devices
False debug log message appeared on CAPsMAN only devices without physichal wireless interfaces. This fix eliminates them.
* Fixed indentation to pass flake8 test
* Awair Sensor Platform
This commit adds a sensor platform for Awair devices, by accessing
their beta API. Awair heavily rate-limits this API, so we throttle
updates based on the number of devices found. We also allow for the
user to bypass API device listing entirely, because the device list
endpoint is limited to only 6 calls per day. A crashing or restarting
server would quickly hit that limit.
This sensor platform uses the python_awair library (also written
as part of this PR), which is available for async usage.
* Disable pylint warning for broad try/catch
It's true that this is generally not a great idea, but we really don't
want to crash here. If we can't set up the platform, logging it and
continuing is the right answer.
* Add space to satisfy the linter
* Awair platform PR feedback
- Bump python_awair to 0.0.2, which has support for more granular exceptions
- Ensure we have python_awair available in test
- Raise PlatformNotReady if we can't set up Awair
- Make the 'Awair score' its own sensor, rather than exposing it other ways
- Set the platform up as polling, and set a sensible default
- Pass in throttling parameters to the underlying data class, rather
than use hacky global variable access to dynamically set the interval
- Switch to dict access for required variables
- Use pytest coroutines, set up components via async_setup_component,
and test/modify/assert in generally better ways
- Commit test data as fixtures
* Awair PR feedback, volume 2
- Don't force updates in test, instead modify time itself and let
homeassistant update things "normally".
- Remove unneeded polling attribute
- Rename timestamp attribute to 'last_api_update', to better reflect
that it is the timestamp of the last time the Awair API servers
received data from this device.
- Use that attribute to flag the component as unavailable when data
is stale. My own Awair device periodically goes offline and it really
hardly indicates that at all.
- Dynamically set fixture timestamps to the test run utcnow() value,
so that we don't have to worry about ancient timestamps in tests
blowing up down the line.
- Don't assert on entities directly, for the most part. Find desired
attributes in ... the attributes dict.
* Patch an instance of utcnow I overlooked
* Switch to using a context manager for timestream modification
Honestly, it's just a lot easier to keep track of patches. Moreover,
the ones I seem to have missed are now caught, and tests seem to
consistently pass.
Also, switch test_throttle_async_update to manipulating time more
explicitly.
* Missing blank line, thank you hound
* Fix pydocstyle error
I very much need to set up a script to do this quickly w/o tox, because
running flake8 is not enough!
* PR feedback
* PR feedback
Remove the return value from setup_platform
Convert LutronLight.__init__ to use super() when referencing the parent class.
Change device_state_attributes() to use lowercase snakecase (Rename 'Lutron Integration ID' to 'lutron_integration_id')
* Added support for cropping pictures in proxy camera
This includes extending the configuration to introduce a mode
(either 'resize', default, or 'crop') and further coordinates
for the crop operation.
* Also fixed async job type, following code review
* Added Fibaro omcponents
Added cover, light, sensor and switch components
* Improvements based on code review
Improvements based on code review
* Fixes based on code review
Fixes based on code review
* Changes to light behavior based on code review
Changes to light behavior based on code review
* Internal changes
Changed how brightness is represented internally.
It should have no impact on functionality.
* Use service play_media instead of select_source
Use service play_media instead of select_source to change the channel as play_media is the right service for that.
* Log error on invalid media type
Log an error instead of raising a NotImplementedError if an invalid media type is provided.
* Changed so that success is not in else statement
Updated so that if media_type is channel that it is not in the else of an if.
* Update directv.py
Removed SELECT_SOURCE as supported feature.
* Rebased
Re-based with dev
* Add websocket calls to shopping-list
Plan to deprecate API calls once shopping-list panel is removed from UI and replaced fully by Lovelace card
* Address ci-bot issues
* Fix violations
* Address travis complaints
* Address review comments
* Update test_shopping_list.py
* Update mikrotik.py
* Update mikrotik.py
* Added basic api_ssl support
Added preliminary support to use api_ssl instead of api. It don't check the validity of the certificate need it.
At Home Assistant side add ssl = true to your sensor configuration, and don't forget to change the port too (to 8729 by default):
device_tracker:
- platform: mikrotik
host: 192.168.88.1
port: 8729
ssl: true
username: homeassistant
password: TopSecret
At MikroTik side you have to add or generate a certificate, and configure api_ssl to use it. Here is an example:
/certificate add common-name="Self signed demo certificate for API" days-valid=3650 name="Self signed demo certificate for API" key-usage=digital-signature,key-encipherment,tls-server,key-cert-sign,crl-sign
/certificate sign "Self signed demo certificate for API"
/ip service set api-ssl certificate="Self signed demo certificate for API"
/ip service enable api-ssl
/ip service disable api
/user group add name=homeassistant policy=read,api,!local,!telnet,!ssh,!ftp,!reboot,!write,!policy,!test,!winbox,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp
/user add group=homeassistant name=homeassistant
/user set password="TopSecret" homeassistant
* Fixed import missind ssl lib
* SSL support code cleanup, use ssl-api port by default if ssl enabled
* Restored accidentalli deleted method parameter
* Fixed Python 3.5.3 compilation errors
Fixed Python 3.5.3 compilation errors reported by Travis CI
* Removed duplicated MTK_DEFAULT_API_PORT
* Recreate component if discovery info is changed
* Update component instead of remove+add
* Set name and unique_id in __init__
* Update unit test
* Cleanup
* More cleanup
* Refactor according to review comments
* Change discovery_hash
* Review comments, add tests
* Fix handling of value_template
Dark Sky Sensor didn't expose conditions for day 0 (today forecast) that
had the same name as current conditions. With this change all conditions
form day 0 (today) forecast are exposed the same way as conditions for
the rest of the days (1..7): as `dark_sky_<condition>_<day>`. As a
consequence, conditions for day 0 that were already exposed now have
`_0` suffix. This actually improves the code by removing most of
special handling, based on condition name.
To get day 0 conditions the user now has to add `- 0` to `forecast`
configuration parameter.
Conditions, for which suffix `_0` appeared: `precip_accumulation`,
`temperature_high`, `temperature_low`, `apparent_temperature_high`,
`apparent_temperature_low`, `precip_intensity_max`, `moon_phase`.
This is a breaking change!
Closes#18205
* Enhancements for DirecTV media player
Following enhancements have been made:
1. Added debug logging
2. Added ability to change channel using select_source service of the remote platform.
3. State will now show paused if a recorded program is paused, for live TV playing will always be returned.
4. Added the following attributes:
a. media_position: current position of the media (in seconds)
b. media_position_updated_at: timestamp when media_position was updated.
c. source: current source (channel).
d. media_isbeingrecorded: if current media is being recorded or not.
e. media_rating: TV/Movie rating of the media
f. media_recorded: if current media is recorded or live TV
g. media_starttime: Timestamp media was aired
Reordered properties to follow same order as how they are in __init__.py of remote platform.
* Fixed error and cleaned up few items
Fixed an issue when determining if a program is recorded or not.
Cleaned up some coding.
* Added available property
Added available property
* Disable feature TURN_ON and TURN_OFF for DVR clients
Disable the feature turn_on and turn_off for DVR clients.
* self._is_client and raise NotImplementedError
Updated setting self._is_client
Raise NotImplementedError if turn_on or turn_off is called for clients.
* Log delay and wait_template steps in scripts
Help improve script debugging by logging delay and wait_template steps in scripts.
* Update tests
* Fix lint issue
This avoids a race between multiple concurrent calls to
entity_platform.async_add_entities() which may cause
entities to be created with non-unique entity_id
* Enable native support + ADB authentication for Fire TV
* Remove unnecessary underscore assignments
* Bump firetv to 1.0.5.3
* Change requirements to 'firetv>=1.0.6'
* Change requirement from 'firetv>=1.0.6' to 'firetv==1.0.6'
* Address pylint errors
* Ran 'python script/gen_requirements_all.py'
* Address some minor reviewer comments
* Run 'python script/gen_requirements_all.py'
* Just use the 'requirements_all.txt' and 'requirements_test_all.txt' from the 'dev' branch...
* Edit the 'requirements_all.txt' file manually
* Pass flake8 tests
* Pass pylint tests, add extended description for 'select_source'
* More precise exception catching
* More Pythonic returns
* Import exceptions inside '__init__'
* Remove 'time.sleep' command
* Sort the imports
* Use 'config[key]' instead of 'config.get(key)'
* Remove accessing of hidden attributes; bump firetv version to 1.0.7
* Bump firetv to 1.0.7 in 'requirements_all.txt'
* Don't access 'self.firetv._adb', use 'self.available' instead
* Remove '_host' and '_adbkey' attributes
* Create the 'FireTV' object in 'setup_platform' and check the connection before instantiating the entity
* Fixed config validation for 'adbkey'
* add_devices -> add_entities
* Remove 'pylint: disable=no-name-in-module'
* Don't assume the device is available after attempting to connect
* Update the state after reconnecting
* Modifications to 'adb_decorator'
* Modifications to 'setup_platform'
* Don't update the state if the ADB reconnect attempt was unsuccessful
* 'return None' -> 'return'
* Use 'threading.Lock()' instead of a boolean for 'adb_lock'
* Use a non-blocking 'threading.Lock'
Show excited, happy, neutral, sad, dead emoticon, or biohazard icon,
based on air pollution level.
Also, fix a small typo and change air quality index icon to
`mdi:chart-line`. Seems a bit more logical.