* Added possibilities to use template in the command_line sensor
* Minor style guideline conforms
* Minor style guideline conforms
* Added new test for template rendering
* Minor style guideline conforms
* Minor style guideline conforms
* Fixed failing testcases
* Fix style violations
* fix code pretty
* Add new device tracker for Huawei Routers.
This was tested with the HG8247H model, used by Vodafone
Portugal for the Fiber service.
* add to .coveragerc; remove import and space
* add comments and fix lint
* rename methods
* huawei_router: add constants to scanner class
* huawei_router: remove lock; use format() in string
* huawei_router: use tupple instead of member only class
* huawei_router: reduce min scan time
* huawei_router: lint
* huawei_router: lint
* huawei_router: add missing lines in imports
* huawei_router: correctly decode string after router firmware update
* Remove things that is done on core now
* LIFX: improve performance of multi-light transitions
To avoid hub overload, the light.turn_on call will change each light
sequentially.
As LIFX has no hub we can safely increase performance by starting all
light transitions concurrently.
* Improve state updates after light changes
The light.turn_on call will set a new state and then immediately read it
back. However, reading the state of a LIFX light right after a state
change can still return the old value.
To handle this situation we have previously delayed the update request a
little while to allow a potential state change to settle. Because light
updates are now run in parallel, this delay might be too short when many
lights are set at once.
This commit introduces a per-light Lock to make it explicit when the
state cannot yet be trusted.
We must then do the state update ourselves. This was already done at the
end of a long transition and that code can be reused for also doing the
update at the start of a transition.
* Add RainMachine switch platform
* Updated requirements_all.txt
* Cleaning up CI and coverage results
* Small update to deal with older pylint
* Fixed small indentation-based error
* Added some more defensive try/except logic around calls
* I'm not a fan of importing a library multiple times :)
* Making PR-requested changes
* Fixed ref to positional parameter
* Attempting to fix broken linting
* Ignoring no-value-for-parameter pylint error
* Implement Roomba fanspeed
* Fix: fan_speed_list is always empty
* Log instead of raising an exception when incorrect fan speed has been provided
* Don't attempt to set any preference if fan speed is invalid
* Initial implementation of Asterisk Mailbox
* Rework asterisk_mbox handler to avoid using the hass.data hash. Fix requirements.
* Handle potential asterisk server disconnect. bump asterisk_mbox requirement to 0.4.0
* Use async method for mp3 fetch from server
* Add http as dependency
* Minor log fix. try to force Travis to rebuild
* Updates based on review
* Fix error handling as per review
* Fix error handling as per review
* Refactor voicemail into mailbox component
* Hide mailbox component from front page
* Add demo for mailbox
* Add tests for mailbox
* Remove asterisk_mbox sensor and replace with a generic mailbox sensor
* Fix linting errors
* Remove mailbox sensor. Remove demo.mp3. Split entity from platform object.
* Update mailbox test
* Update mailbox test
* Use events to indicate state change rather than entity last-updated
* Make mailbox platform calls async. Fix other review concerns
* Rewrite mailbox tests to live at root level and be async. Fixmailbox dependency on http
* Only store number of messages not content in mailbox entity
* Add new service `clean_spot` to vacuums
- Add as base component service, with associated support flag to make it optional
- Implement on Demo vacuum
- Implement on Xiaomi vacuum
- Update tests for platforms Demo and Xiaomi
- Change default icon for vacuums to `mdi:roomba`, but keep the one for the Xiaomi
- (In a polymer PR: add new service to command toolbar in the 'more-info' card)
* Add `clean_spot` service description
* fix default properties for vacuum component
* Do not use pychromecast.Chromecast for Cast Groups
pychromecast.Chromecast creates Chromecast instance with friendly_name and cast_type of the device and not of a group.
Which leads to collisions
* Update cast.py
* using hass.data
* Fixed and extended tests
* Line length in tests
* Lint in tests
* Added support for Egardia / Woonveilig alarm control panel
* Added support for Egardia / Woonveilig alarm control panel
* Added support for Egardia / Woonveilig alarms
* Updating egardia support with exception handling and other fixes
* Egardia platform, requirements file updated
* Fixing state checking
* Adding exception handling
* Removing unnecessary logging
* Removing unnecessary logging
* Updating to egardiadevice component 1.0.10
* Improving exception handling
* Adding implementation of egardiaserver for alarm triggered status
* Clean-up
* Fix my previous change
* Fix tests for Demo vacuum platform (and increase coverage)
* increase coverage of xiaomi vacuum tests and include in coverage
Also little fixes
* remove print statement
* Add DEBUG-level log for db row to native object conversion
This is now the bottleneck (by a large margin) for big history queries, so I'm leaving this log feature in to help diagnose users with a slow history page
* Rewrite of the "first synthetic datapoint" query for multiple entities
The old method was written in a manner that prevented an index from being used in the inner-most GROUP BY statement, causing massive performance issues especially when querying for a large time period.
The new query does have one material change that will cause it to return different results than before: instead of using max(state_id) to get the latest entry, we now get the max(last_updated). This is more appropriate (primary key should not be assumed to be in order of event firing) and allows an index to be used on the inner-most query. I added another JOIN layer to account for cases where there are two entries on the exact same `last_created` for a given entity. In this case we do use `state_id` as a tiebreaker.
For performance reasons the domain filters were also moved to the outermost query, as it's way more efficient to do it there than on the innermost query as before (due to indexing with GROUP BY problems)
The result is a query that only needs to do a filesort on the final result set, which will only be as many rows as there are entities.
* Remove the ORDER BY entity_id when fetching states, and add logging
Having this ORDER BY in the query prevents it from using an index due to the range filter, so it has been removed.
We already do a `groupby` in the `states_to_json` method which accomplishes exactly what the ORDER BY in the query was trying to do anyway, so this change causes no functional difference.
Also added DEBUG-level logging to allow diagnosing a user's slow history page.
* Add DEBUG-level logging for the synthetic-first-datapoint query
For diagnosing a user's slow history page
* Missed a couple instances of `created` that should be `last_updated`
* Remove `entity_id` sorting from state_changes; match significant_update
This is the same change as 09b3498f41 , but applied to the `state_changes_during_period` method which I missed before. This should give the same performance boost to the history sensor component!
* Bugfix in History query used for History Sensor
The date filter was using a different column for the upper and lower bounds. It would work, but it would be slow!
* Update Recorder purge script to use more appropriate columns
Two reasons: 1. the `created` column's meaning is fairly arbitrary and does not represent when an event or state change actually ocurred. It seems more correct to purge based on the event date than the time the database row was written.
2. The new columns are indexed, which will speed up this purge script by orders of magnitude
* Updating db model to match new query optimizations
A few things here: 1. New schema version with a new index and several removed indexes
2. A new method in the migration script to drop old indexes
3. Added an INFO-level log message when a new index will be added, as this can take quite some time on a Raspberry Pi
* Xiaomi vacuum as component with switch, sensors and services
- Conversion from switch platform to async component.
- Add services proposed in #8416 to the new component, with shorter names.
- Add sensors for the vacuum robot as a selectable list from `battery`, `state`, `error`, `fanspeed`, `clean_time` and `clean_area` (the state attributes of the switch). The sensors don't poll, but listen to a signal to update the state, the switch fires this signal when updating.
- Assign default icons to sensors and the switch (`mdi:google-circles-group` looks like the robot!)
* path change in requirements_all (from switch platform to component)
* copy pasting is a bad habit
* services to the components services.yaml, modify .coveragerc
* review: use with multiple hosts, fix calls to async_add_devices, fix ranges for services
* `icon_for_battery_level` util method
* Xiaomi vacuum as platform of new component vacuum
- Created new component `vacuum` from a ToggleEntity.
- Add services `turn_on`, `turn_off`, `cleaning_play_pause`, `stop`, `return_to_base`, `locate`, `set_fanspeed` and `send_command`.
- Remove the main switch for the xiaomi vacuum (the toggable main entity is the switch).
- Add `support flags` for the common services
- Assign default icons to sensors and the switch (`mdi:google-circles-group` looks like the robot!)
- Move services descriptions to a yaml file for the new component.
- Update requirements_all.
- Update coveragerc.
* fix coveragerc
* fix battery icon helper to use more icons
* remove sensors, create properties and support flags for custom UI
* cleaning
* updated state_attrs for filtering in UI, renamed platform to simply `xiaomi`
* fix platform rename
* change fanspeed and expose `fanspeed_list` to use speed steps
* minor fixes
- Rename service `start_pause`
- Add 'Error' attribute only if `got_error`.
- Minor changes
* rename state attrs
* rename state attrs
* review changes: cut fan__speed, style changes, remove logging, and more
* add ATTR_COMMAND = 'command' to const
* pop entity_id from service data
* remove property accessor for vacuum object
* lint fix
* fix extra attrs names
* module level functions for calling the services
* params as optional keyword for `send_command`
* params as optional keyword for `send_command`, remove debug logs
* explicit parameters for `set_fan_speed` and `send_command`
* Demo platform for the vacuum component
* vacuum tests for the Demo platform
* some fixes
* don't omit vacuum
* vacuum tests for the Xiaomi platform
* fix test
* fix
* fix xiaomi test
* fix coveragerc
* test send command
* fix coveragerc
* fix string formatting
* The coverage is to low. It need 93% or more
* Allow reporting some state attributes as tags to InfluxDB
Some state attributes should really be tags in InfluxDB. E.g.
it is helpful to be able to group by friendly_name, or add a custom
attribute like "location" and group by that. Graphs in Grafana are much
easier to read when friendly names are used, and not node ids.
This commit adds an optional setting to InfluxDB config:
'tags_attributes'. Any attribute on this list will be reported as tag
and not as field to InfluxDB.
* Allow overriding InfluxDB measurement for each reported item separately
Bundling all items with the same "unit of measurement" together does not
always makes sense. For example, both "relatively humidity" and "battery
level" are reported as "%", but I'd rather see them as separate
measurements in InfluxDB. This commit allows for 'influxdb_measurement'
attribute. When set on node, it will take precedence over the global
'override_measurement' and component-specific 'unit_of_measurement'.
* Minor updates to InfluxDB component improvements, as suggested by
@MartinHjelmare.
* Moved per-component config from 'customize' into 'influxdb'
configuration section. The following three sub-sections were added:
'component_config', 'component_config_domain' and
'component_config_glob'. The sole supported per-component attribute
at this point is 'override_measurement'.
* Lint
* Fixed mocked entity_ids in InfluxDB tests to be in domain.entity_id
format, to satisfy EntityValues requirements.
* Added tests for new InfluxDB configuration parameters
* Fixes to some docstrings
* Add mochad light component
This commit adds a new component to control x10 dimmers/lights with
mochad.
* Create comm_type and address constants
The comm_type and address conf constants are shared between all mochad
devices because they are required information used for configuring a
device. This commit moves the definition into const.py so they're
consistent between all component types.
* Add support for LaunchRequest alexa intent
* Support LaunchRequest for multiple skills
* formatting
* adding tests to cover launch request
* formatting
* flux_led: support for property "available"
* Implemented changes from code review
* Implemented changes from code review
* Implemented changes from code review
* Honeywell fixes and improvements
Give the Honeywell device a state ('On', 'Off', etc) that
can be displayed to user and understood by other components.
Previously this was always 'Unknown'. Update also raises a
state_changed event when a new temperature is polled.
These two together fix an issue (#8688) where Honeywell
climate data couldn't be logged in InfluxDB.
* Roll back some changes
These were not necessary to achieve the result I wanted.
* Renamed RoundThermostat's 'device' member for greater clarity
Now called 'client'
* Improve and simplify discovering thermostat mode
Per code review, this is a rather neater way to discover the thermostat mode
* Update tests for compatibility with new component
The tests previously relied upon the update() method being
called in the constructor. This is no longer the case.
* Address formatting review comment
Parens not necessary
* This system mode is not certain to apply to domestic hot water
Moved the mode lookup to only happen on update of radiator devices,
since hot water devices seem to be treated differently and I can't test.
* Allow sonos to select playlists as a source
Most of this was taken from
https://github.com/home-assistant/home-assistant/issues/5598#issuecomment-278229895
however I made a few small improvements so that it works for other
services than Spotify and it should properly switch to playing the queue
if you had another song playing previously.
/cc @PatBoud
* Attempt to fix style issues
* More indent changes
* Fix misplaced period
* Move playlist replacement to function
* Privatize replace_queue_with_playlist and explain
* Remove unneeded decorator
* Fix doc formatting
* Added support to enable/disable motion detection for foscam cameras. This support was added in 0.48.1 as a generic service for cameras. Motion detection can be enabled/disabled for foscam cameras with this code-set.
* Fixed the violation identified by hound-bot
* Fixed the comment posted by HoundCI-Bot regarding using imperative mood statement for pydocstyle
* Fixed the error that travis-ci bot found.
* As per comment from @balloob, Instead of directly using the URL to talk to foscam, used a 3rd party foscam library to communicate with it. This library already has support to enable/disable motion detection and also APIs to change the motion detection schedule etc. Need to add more support in the pyfoscam 3rd party library for checking if motion was detected or even if sound was detected. Once that is done, we can add that into HASS as well.
* Lint
* Removed the requests library import which is not used anymore
* Updating requirements_all.txt based on the code-base of home assistant that i have. Generated using the gen_requirements_all.py script
* Updating requirements_all.txt and requirements_test_all.txt generated by gen_requirements_all.py after latest pull from origin/dev
* Updated requirements_all.txt with script
* Updated the foscam camera code to fix lint errors
* Fixed houndci violation
* Clean up remote component
* Don't have device be required in send_command service and method.
* Don't have entity_id be required in the base service schema.
* Don't always add activity in the data dict for a service call.
* Update harmony remote platform according to new service schema.
* Remove not needed properties and attributes from the Kira remote
platform.
* Add send_command method to demo platform.
* Add tests and remove duplicate tests.
* Break out required argument as positional argument
* added invert_state optional parameter
* removed superfluous parens
* moved state inversion to the is_closed method
* added relay_invert feature
* fixed syntax to comply with houndci-bot rules
* changed state_invert to invert_state and relay_invert to invert_relay
* Add new component for TPLink light bulbs.
* Update with result of gen_requirements_all.
* Add new component light.tplink.
* Move I/O outside of properties as per https://goo.gl/Nvioub.
* Fixed issue with routers in bridge mode
- Router in brdige mode apparently don't report all of the stats
- Re-wrote the data_format function so it's a bit easier to follow and able to log keys that aren't supported by a router in a given mode
- Changed config so that it properly ignores conditions when not explicitly listed
- Added tests to check for the above and also to verify we log that a key doesn't exist rather than throwing an exception
* Mistakenly was calling MONITORED_CONDITIONS in data_format
- Changed to be the actual config values to prevent log error
* New media_player platform for Russound devices using the RIO protocol
Auto discovers zones and sources
Handles media metadata from sources that support it
asyncio implementation
Push updates for any zone or source changes so no polling required.
* Fixed up linting issues
* Addressing PR feedback
Updated russound_rio dependency to 0.1.3
Use enumerate_zones and enumerate_sources methods instead of doing it in
the platform.
Register callbacks in async_added_to_hass coroutine
Corrected behavior of async methods
DirectPy, the third party library used for controlling directv boxes,
has the ability to accept an ID in order to act as a remote for Genie
slaves instead of just the master directv box. This commit adds glue
such that one can configure home assistant to interface with these slave
genie boxes.
Signed-off-by: Nicholas Sielicki <sielicki@yandex.com>
* Add new component for TPLink light bulbs.
* Update with result of gen_requirements_all.
* Add new component light.tplink.
* Move I/O outside of properties as per https://goo.gl/Nvioub.
* Fixed issue with routers in bridge mode
- Router in brdige mode apparently don't report all of the stats
- Re-wrote the data_format function so it's a bit easier to follow and able to log keys that aren't supported by a router in a given mode
- Changed config so that it properly ignores conditions when not explicitly listed
- Added tests to check for the above and also to verify we log that a key doesn't exist rather than throwing an exception
* Mistakenly was calling MONITORED_CONDITIONS in data_format
- Changed to be the actual config values to prevent log error
* Update zwave.py to work with updated OpenZwave library
Update zwave.py to work with updated OpenZwave library
* Update zwave.py
* Update zwave.py
* Update to fix garage door openers
Update to fix garage door support for latest version of openzwavelib
* Update to cover.zwave list of states
Update to cover.zwave to provide list of states based on dev version of
openzwave lib
* Some values not saved
* Formatting fix
* Formatting fix
* Variable typo
* Formatting fix
* Formatting
* Variable Update
Variable Update and properties added
* Formatting fixes
* Formatting Fix
* Update test case for door states
* Formatting / Testing process fix
* Formatting
* Formatting / Test Fixes
* Variable rename
* Added members to CoverDevice
* Removed un-needed else
* Formatting
* Formatting
* Variable name changes and const updates
* Changed variable names to cover_state
* Added constains into const.py
* Updated to change the main state on the cover device
* Fixes
* Formatting fixes
* Formatting/Variables
* Formatting
* Variable fixes
* Import update
* Formatting / Variables
* Update test for new states
* Revert state changes
* Test fix
* Variable Fix
* Formatting
* Variable typo
* Missing constant
* Variable fix
* Requested changes
* Added is_opening
* Added is_closing
* Updated test based on changes
* Formatting
* Changed cover_state back to _state
* Formatting and variable fixes
* Test fixes
* Formatting and variable touchup
* Formatting
* Optimizations
* Add new cover features to demo
* Add tests for demo cover closing/opening
* Remove unused STATE_STOPPED
* Add tests for new zwave cover values
* Bugfix: remove superfluous domain filter
This filter is already applied later in the function by the `filters` object, where it is conditionally applied when appropriate. This fixes the problem where we get a domain filter even when searching for a single entity_id, which needlessly harms the query's performance.
* Performance: build different query when only getting single entity
When querying the history of a single entity, we can use an entirely different method for the "synthetic zero data point" by simply sorting by date and doing a LIMIT 1. This performs thousands of times better than the multi-entity query when the current recorder_run has been going for a while.
* Add entity_id filter to single-entity request
The entity_id filter was handled inside the `filters.apply` logic which is used in most cases, BUT didn't work when no `filters` was passed in to the method. Now it'll work even if no `filters` object is passed in.
* Fix linting errors in history.py
* Undo removal of domain filter
Putting back the domain filter that was removed in 76a6371705 - there are use-cases where get_states is called without a filter object, so we need the domain filter to work in those cases as well.
* Fix truncated comment
* work on weather panel
* update yahooweather with more forecast details
* Update yweather to allow user input forecast date
* fix for houndci
* fix long line
* fix1
* Revert "work on weather panel"
This reverts commit 28b4972233.
revert unintentional submodule change
* fix2
fix typo, add try catch to another int()
* fix pylint
* fix3
* fix4
* Update yweather.py
* Update yweather.py
* Remove global data construct
* Yahoo API support only 5 days forecast
* remove forecast
* fix lint
* fix lint p2
* Update yweather.py
* Manual alarm with MQTT control
* Duplicate manual control panel code instead of extending it
* Duplicate manual alarm test as well; modify for manual_mqtt
* Add MQTT-specific tests for manual_mqtt alarm
Back in "ubus: Refresh session on Access denied (#8111)" I added the
decorator _refresh_on_acccess_denied. Somehow that stopped multiple ubus
trackers from working in parallel, and only the one first init'ed
worked.
Changing the order of the decorators fixes the issue but, I'm sorry to
say I can't figure out why. There's some magic somewhere which I'm
missing.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
Back in "ubus: Refresh session on Access denied (#8111)" I added the
decorator _refresh_on_acccess_denied. Somehow that stopped multiple ubus
trackers from working in parallel, and only the one first init'ed
worked.
Changing the order of the decorators fixes the issue but, I'm sorry to
say I can't figure out why. There's some magic somewhere which I'm
missing.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
* Fix TP-Link device tracker regression since 0.49
This regression was introduced by #8322.
Fix is to utf encode the password like the other TP-Link backends do.
* Fix linting issue introduced in previous commit
Commit in question: 677f3fbb7f
According to the documentation, the `value_template` for the REST
binary_sensor is not required. However, if you don't provide this when
setting up a binary sensor, the component fails. Looks like a variable
was not being set, which I've now included.
This should make the REST binary sensor act the same way as the REST
sensor now.
* make attributes in the fritzdect module easier to process
* remove spaces in attribute names
* move units to separate attributes
* make attributes in the fritzdect module easier to process
* remove spaces in attribute names
* move units to separate attributes
* Use new python formating syntax and attribute constant
* Shorten too long line
* Fix indent
* Add support for multiple ping utilities.
* Added support for differing flavours of ping included with
different distributions (specifically alpine linux for hassio's
homeassistant).
* Updated as per comments in PR
* Add intent component
* Add intent script component
* Add shopping list component
* Convert Snips to use intent component
* Convert Alexa to use intent component
* Lint
* Fix Alexa tests
* Update snips test
* Add intent support to conversation
* Add API to view shopping list contents
* Lint
* Fix demo test
* Lint
* lint
* Remove type from slot schema
* Add dependency to conversation
* Move intent to be a helper
* Fix conversation
* Clean up intent helper
* Fix Alexa
* Snips to use new hass.components
* Allow registering intents with conversation at any point in time
* Shopping list to register sentences
* Add HTTP endpoint to Conversation
* Add async action option to intent_script
* Update API.ai to use intents
* Cleanup Alexa
* Shopping list component to register built-in panel
* Rename shopping list intent to inlude Hass name
* The gateway configuration accepts a MAC address or a SID value in uppercase already.
The ringtone services accepts the same values now. I hope it will avoid confusion.
* Device support for the new wall switches with neutral lead (ctrl_ln1, ctrl_ln2) added.
* Measurement unit from pressure of weather.v1 fixed.
* Device support for sensor_magnet.aq2 added.
* Device support for sensor_motion.aq2 (motion and lux) added.
* Code reformatted.
* The ringtone service (start/stop) uses the parameter gw_mac instead of gw_sid now.
* Version of the required library updated.
* Enhance python_script to support "_getitem_"
In order to use dict / list structures in python scripts we need
_getitem_ allowed in the RestrictedPython environment. There is a
default_guarded_getitem included with RestrictedPython, which is a
pass through used in the Eval code paths.
* Add tests for dict/list support in python_scripts
* Lint
* Added a service to write to KNX group addressed including documentation
* Define parameters as required
* Reformating
* Moved service documentation to service.yaml
* Moved service documentation to services.yaml
* Update knx.py
* Upgrade the alarmdecoder dependency library from 0.12.1 to 0.12.3. Nutech software who owns this library have upgraded this library with some fixes regarding arming it to home/away and then disarming the alarm. Without this upgraded library, HASS is having a problem when we try to disarm an armed alarm after around 8 hours or so.
* Updated the requirements_all.txt by running the script gen_requirements_all.py
* Add support for different stream formats
* Encapsulate logic inside MediaExtractor class
* Add CONFIG_SCHEMA
* Fix for cases when youtube-dl returns content of playlist as list
* Some images are not supported by face_recognition, so this patch treats the error
messages instead throwing a traceback. Fixes#7867
* Makes lint happy
* Initial support for Google Wifi/OnHub
* Moved state logic to update function of API class
- Throttle added to update
- State logic implementation is cleaner
- Modified tests to work with the new throttle on update
* Return a 0 temperature value when none is found
It's well documented that these TRVs will only return the current temperature
for a short time after the actuator has moved. This means that, usually, they will
not return the current temperature. Setting a non-value here causes errors in the logs
and for the TRV to not show on the dashboard at all
* Fix lint issue
The citibykes API returns "null" as value for empty_slots on some
stations (see #8527). This causes the component to not process the data.
This is fixed by accepting None as valid data. The row in the frontend
is left empty if "null" was returned by the service.
fixes#8527
data may be None if twitter data property unconfigured:
File "/opt/homeassistant/homeassistant_venv/lib/python3.4/site-packages/homeassistant/components/notify/twitter.py", line 63, in send_message
media = data.get(ATTR_MEDIA)
* Fix TP-Link device tracker regression since 0.49
This regression was introduced by #8322.
Fix is to utf encode the password like the other TP-Link backends do.
* Fix linting issue introduced in previous commit
Commit in question: 677f3fbb7f
* Make it available during state paused.
* Don't adjust for media_position_updated_at. I.e. do as vlc, sonos etc
so that returned position is the position at the time of
media_position_updated_at, not now.
* Make aiolifx modules easily available
* Use aiolifx features_map for deciding bulb features
Also move the feature detection out of Light so it is available even
during the initial detection.
* Move each LIFX light type to a separate class
* Simplify AwaitAioLIFX
This has become possible with recent aiolifx that calls the callback even
when a message is lost.
Now the wrapper can be used also before a Light is added though the register
callback then has to become a coroutine.
* Refactor send_color
* Add support for multizone
This lets lifx_set_state work on individual zones.
Also update to aiolifx_effects 0.1.1 that restores the state for individual
zones.
* Make it available during state paused.
* Don't adjust for media_position_updated_at. I.e. do as vlc, sonos etc
so that returned position is the position at the time of
media_position_updated_at, not now.
* Make aiolifx modules easily available
* Use aiolifx features_map for deciding bulb features
Also move the feature detection out of Light so it is available even
during the initial detection.
* Move each LIFX light type to a separate class
* Simplify AwaitAioLIFX
This has become possible with recent aiolifx that calls the callback even
when a message is lost.
Now the wrapper can be used also before a Light is added though the register
callback then has to become a coroutine.
* Refactor send_color
* Add support for multizone
This lets lifx_set_state work on individual zones.
Also update to aiolifx_effects 0.1.1 that restores the state for individual
zones.
* Use pip install --user if venv not active
* Set PYTHONUSERBASE to deps directory, when installing with --user
option.
* Reset --prefix option to workaround incompatability when installing
with --user option. This requires pip version 8.0.0 or greater.
* Require pip version 8.0.3.
* Do not delete deps directory on home assistant upgrade.
* Fix local lib mount and check package exist.
* Update and add tests
* Fix upgrade from before version 0.46
* Extract function to get user site
* Add function(s) to package util to get user site.
* Use async subprocess for one of the functions to get user site.
* Add function to package util to check if virtual environment is
active.
* Add and update tests.
* Update version for last removal of deps dir
* Address comments
* Rewrite package util tests with pytest
* Rewrite all existing unittest class based tests for package util as
test functions, and capitalize pytest fixtures.
* Add test for installing with target inside venv.
The default aiolifx timers are tuned for a network with few lost packets.
This means that lights can become "unavailable" from just a two second
dropout. An unavailable light is completely useless for HA until it is
rediscovered so this is an undesirable state to be in.
These tweaks make aiolifx try harder to get its messages through to the
bulbs, at the cost of some latency in detecting lights that actually are
unavailable.
* This change will enable the functionality for Arlo Q cameras. When we added the code to enable/disable motion detection, we assumed that base station will be present for all arlo type of cameras. But found recently that Arlo Q cameras does not have base station. So, removed the base_station dependency in the init code. Also added code in enable/disable motion detection code to first check if base station is detected by library. If base station is detected then it will use it to enable the motion detection. If not detected, even if service was called, it will not do anything. Enabling/disabling the motion detection for Arlo Q cameras have to added by someone who has that camera. I don't have the Arlo Q cameras.
* Fixed a typo in the code.
* Added support for temperature_offset and humidity_offset
Some DHT sensors require some offsets to work.
* Support for temperature and humidity offset
* Changed lines with 79 characters
* Moved const to dht.py from const.py
* Changed temperature_offset range
* Removed the const
const.py is at original state.
* Fixed continuation line under-indented
* Removed first round and added debug info
* Fix -1 value issue
Fixed issue where thermostat will sometimes return a current temperature or set temperature value of -1
* Update radiotherm.py
* Update radiotherm.py
* Update radiotherm.py
Added retry limit
* Update radiotherm.py
* Update radiotherm.py
* Refactored Amcrest to use central hub component
* Set default streaming source to snapshot
* Simplified code by using discovery platforms
* Makes lint happy
* Update authentication method to basic
* Fixed lint issues
* Makes Amcrest hub async
* Make Amcrest hub IO synchronous and disabled ffmpeg dependency on sensor/amcrest.
* Removed async to load component
* Organized import order
* Update amcrest.py
Prometheus (https://prometheus.io/) is an open source metric and alerting
system. This adds support for exporting some metrics to Prometheus, using
its Python client library.
bellows 0.3.0 changes the API to have both, renaming the attribute which used
to be for input clusters in the process.
This is in preparation for remotes.
* Allow notifications to include media, with Twitter as the first implementation. The Twitter notifier uses the Twitter-recommended async chunked media/upload approach and tries to convey the correct mime type of the media. Twitter implementation based on https://github.com/geduldig/TwitterAPI/blob/master/examples/upload_video.py.
* Changes based on balloob's review:
balloob: "Please remove this file. We fixed the issue in our tests that left this artifact."
balloob: "…prefer a guard clause"
balloob: "This is very inefficient. You are now generating up to 99 values."
balloob: "Since media_id is going to be None, why not just return None and you can remove the else."
* balloob: "Other notify platforms are using ATTR_DATA for it. That way if a platform requires extra metadata, we don't need to add extra fields. So please add it to Twitter via ATTR_DATA."
* New service `send_magic_packet` in new component `wake_on_lan`
* fix
* Unit tests for new component wake_on_lan
* Add wakeonlan to tests requirements
* remove wakeonlan from tests requirements and remake the component tests
* remove wakeonlan from tests requirements
* link domain and service names to component
* fix mocking in test_setup_component
* send_magic_packet as coroutine, better use of mock_calls in tests
* fix imports
* review changes
* better async calls
* Update test_wake_on_lan.py
This commit adds support for the set_operation_mode system call to the
generic thermostat component. This enables users to set whether the
thermostat is enabled or not by either setting it to auto or off.
* New component to connect to VELUX KLF 200 Interface
* Issue #8203: modifications as suggested by hound
* Issue #8203: added entries to .coveragerc
* moving velux/__init__p.y to velux.py
* Issue #8203: Using hass.data for storing global object, updated docstrings
* Issue #8203: validation of config, using standard approach for getting config values
* Issue #8203: Exception handling if connection to velux component fails
* Issue #8203: removed unused import
* Issue #8203: Some minor changes within docstrings
* Issue #8203: Some minor changes within docstrings
* Issue #8203: added dependency for pyvlx to requirements_all.txt
* Issue #8203: less broad exception
* Issue #8203: increased version
* Issue #8203: changed position of pyvlx within requirements_all.txt
* Issue #8203: bumped version of pyvlx to 0.1.3 (better handling of retries when token expires)
* reset pointer to home-assistant-polymer
* Issue #8203: modifications as suggested by fabaff
* hound *sigh*
* use upstream RachioPy, fix manual run switches
* Update requirements for PyPi version of rachiopy
* Use upstream RachioPy 0.1.2 (partial revert of 39c6484d89)
* Revert rachiopy downgrade
* First version of a LaMetrci platform with a Notify module
* Cleanup, fix formatting bugs
* More formatting
* Formatting
* Updated requirements
* formatting
* Formatting
* More formatting
* Dummy commit for new Travis CI run
* Refactoring class methods to instance methods
* Cleanup unused classed
* Removed Eddystone_weatherurl that had nothing to do with this component
* Cleanup class methods
* Cleanup requirements
* Removed broad excepts
Removed storage of LaMetric devices
* Removed unused import
* Use user-set device names for Linksys Smart Wi-Fi routers (3)
* Newline at end of linksys_smart.py
* Remove spaces in last line of linksys_smart.py
* Update linksys_smart.py
* make port mapping optional
* dependencies + improvements
* Added bytes and packets sensors from IGD
* flake8 check
* new sensor with upnp counters
* checks
* whitespaces in blank line
* requirements update
* added sensor.upnp to .coveragerc
* downgrade miniupnpc
Latest version of miniupnpc is 2.0, but pypi only has 1.9
Fortunately it is enough
* revert to non async
miniupnpc will do network calls, so this component can’t be moved to
coroutine
* hof hof
forgot to remove import ot asyncio
* UPnP mapping overlap
Addressing: https://community.home-assistant.io/t/upnp-new-module/20839
* removed whitespaces
Some devices don't seem to return the information properly when asked for
multiple attributes in one read. This separates out the reads if it didn't
work as expected the first time.
Because this data is cached in bellows, I don't expect any extra reads in
the "happy" case.
* Added support for TP-Link EAP 225
* code style changes
* more code style changes
* more understandable variable name
* Added support for TP-Link EAP 225
* code style changes
* more code style changes
* more understandable variable name
* Fix pylint issue (#8325)
* Added support for TP-Link EAP 225
* code style changes
* more code style changes
* more understandable variable name
* Added support for TP-Link EAP 225
* code style changes
* Update snips.py
* Get the list of wireless interfaces from nvram so tri-band routers
work
* ARP checks don't work reliably for ap mode so remove it, associated
list seems pretty solid
* Match on 'mac' instead of 'ip' since we can't use it for ap mode
* The `client_info_tmp` nvram reference, Asus removed it some time ago
* Update AsusWrtResult
* Fixed a bug where changing fan speed was not possible
* Bump pymodbus version to 1.3.1 to fix issue #8285
* Changed all modbus components so that they use CONF_SLAVE from const.py
* Fix checking result from a modbus transaction
* Add missing decorator
* Added modbus write coil service and added descriptions
* Removed a hiding debug print
* Add address-specific KNX listeners that fire events on the HASS bus
* Added docstring
1-byte messages will be converted from a list to the value
* Formating
* Try catch around database updates in recorder. Resolves 6919
* Fixing failed test for line length
* Catch only OperationalError and retry connections before giving up
* Including alchemy exceptions in single function
This applies what was the intended fix in #8336.
moves the fallback for setting client_id to the case when no mqtt config was provided at all. This should reflect the most common use case that fails.
This commit is a workaround and should be reverted when hbmqtt is fixed to allow empty client_id again.
* Initial commit - new CityBikes platform
* Several syntax fixes.
* Added imperial unit support.
* Added station list lenght validation.
* Style fixes.
* Updated requirements.
* Updated .coveragerc.
* Fixed style problems according to pylint output.
* Updated SCAN_INTERVAL value.
* Fixed station names.
Removed unnecessary calls to `slugify`.
Changed the base name to reflect the name of the bike sharing
network, instead of the more generic `citybikes`.
* Small style fix.
* Use async version of python-citybikes
* Made platform setup async.
* Made some more things async.
* Switched to constants.
* WIP: different approach to async.
* Removed python-citybikes depnedency to fix async issues.
* Removed unnecessary hidden property.
* Style fixes.
* Retry network detection.
* Style fixes, and base name usage.
* Fixes according to comments.
* Use cv.latitude instead of coercing to float.
* Updated requirements.
* Several fixes and improvements.
* Started using PlatformNotReady exception.
* Cached the networks list result to avoid unnecessary API requests.
* Switched the asyncio.timeout to use a constant.
* Refactored CityBikes API requests into a separate function
* Fixed linting errors.
* Removed unnecessary requirement.
* Lift Apple TV to pyatv 0.3.2
Update code to use basic new features.
* Support button presses in Apple TV
* Support device authentication
* Convert Apple TV to a component
A media_player platform and a remote platform will be loaded for each
manually configured or discovered device.
* Move device auth to apple_tv component
* Update requirements and coverage config
* Add scan support to apple_tv
* Remove the need to login on the UPC Connect component
* Remove unnecessary imports
* Update the unit tests for the UPC Connect component
* Fix the "302" error with the UPC Connect component
* Fix a flake8 error
* Update the unit tests for the UPC Connect component
The upstream Avion and Decora code has changed to punt retry logic out to
consumers, so update to match. As a bonus, Avion also gains support for
pulling switch configuration off the web rather than requiring manual
configuration.
* Fixed a bug where changing fan speed was not possible
* Bump pymodbus version to 1.3.1 to fix issue #8285
* Changed all modbus components so that they use CONF_SLAVE from const.py
* Add tube_state
Add tube_state sensor
* Final cleanup
* Make corrections
Correct PLATFORM_SCHEMA
* Fix space
* Make test pass
* Correct format of test
Test still failing, don’t understand why
* correct description
* Make test pass
Preferred method below returns None
state = self.hass.states.get('sensor.london_overground')
* Format for hound
* indent
* Make requested changes to test, not working
Test fails with:
AssertionError: assert 0 > 0
where 0 = len([])
Surely I need tube_state.setup_platform ?
* Fixed test
Config was wrong
* Change component name to london_tube
* Update name to london_underground
Make consistent
* cleanup
1. The has_attributes was comparing names to addresses
2. Some errors outside of an except block were using
_LOGGER.except. This will cause an exception itself because there is no
trance context available to the logger
3. Added alias names for the address and state addresses so that they
can be accessed with the same
4. Added return values for the set_int_value and set_percentage methods
to allow error checking similar to the set_value method
5. Added the name of the configured object to the log messages to make
them more meaningful (otherwise multiple similar log messages are
received without any hint as to the target device)
1. The has_attributes was comparing names to addresses
2. Some errors outside of an except block were using
_LOGGER.except. This will cause an exception itself because there is no
trance context available to the logger
3. Added alias names for the address and state addresses so that they
can be accessed with the same
4. Added return values for the set_int_value and set_percentage methods
to allow error checking similar to the set_value method
5. Added the name of the configured object to the log messages to make
them more meaningful (otherwise multiple similar log messages are
received without any hint as to the target device)
* Added camera service calls to arm/disarm the cameras. Entity id is optional so that with a single call we can arm all the cameras or specify a particular entity id to arm if applicable and possible in that camera type.
* Added camera service calls to arm/disarm the cameras. Entity id is optional so that with a single call we can arm all the cameras or specify a particular entity id to arm if applicable and possible in that camera type.
* Added camera service calls to arm/disarm the cameras. Entity id is optional so that with a single call we can arm all the cameras or specify a particular entity id to arm if applicable and possible in that camera type.
* Fixed the spaces and indentation related issues that houndci found
* Fixed the spaces and indentation related issues that houndci found
* Missed the const file which has the macros defined.
* Fixed the CI build error
* Fixed the CI build error because of unused variable in exception case
* Updating the arlo code based on comment from @balloob. Changed the arm and disarm to enable_motion_detection and disable_motion_detection respectively. Similarly fixed the AttributeError handling. Added dummy code to the demo camera also. Moved out the definitions in const.py into the camera __init__ file
* Fixed the comments posted by houndci-bot
* Fixed the comments posted by houndci-bot
* Fixed the comments posted by houndci-bot
* Fixed the comments posted by travis-ci integration bot
* Fixed the comments posted by travis-ci integration bot
* Fixed the comments posted by travis-ci integration bot for demo.py: expected 2 lines, found 1
* Updated code in camera __init__.py to use the get function instead of directly calling the member in the structure.
* Updated code in camera __init__.py
* Posting the updated code for PR based on @balloob's suggestions/recommendations
* Removed the arlo reference from demo code. Copy-paste error
* Removed the unused import found by hound bot
* Expected 2 lines before function, but found only 1.
* Based on @balloob's comments, moved these constants to the camera/arlo.py
* Added test_demo.py to test the motion enabled and motion disabled in camera component
* Fixing issues found by houndci-bot
* Fixing issues found by houndci-bot
* Fixing the code as per @balloob's suggestions
* Fixing the code as per @balloob's suggestions
* Fixing the test_demo failure. Tried to rewrite a base function to enable the motion in __init__.py and missed to add it to as a job.
* Fixing the hound bot comment
* Update arlo.py
* Update arlo.py
* Adding done_message to alert
Adding an optional entry to the config that will send a notification when an
alarm goes from on to off.
* Update test_alert.py
* Update test_alert.py
* Revert "Version bump to 0.49.0.dev0 (#8266)"
This reverts commit 8e4394f173.
* Revert "Adding done_message to alert (#8116)"
This reverts commit 5e56bc7464.
* Revert "Camera services arm disarm including Netgear Arlo (#7961)"
This reverts commit ed20f7e359.
* Revert "Make Android app shortcut use 'Home Assistant' as name instead of just 'Assistant'. (#8261)"
This reverts commit 0bcb7839fb.
* Revert "Version bump to 0.49.0.dev0 (#8266)"
This reverts commit 8e4394f173.
* Revert "Adding done_message to alert (#8116)"
This reverts commit 5e56bc7464.
* Revert "Camera services arm disarm including Netgear Arlo (#7961)"
This reverts commit ed20f7e359.
* Revert "Make Android app shortcut use 'Home Assistant' as name instead of just 'Assistant'. (#8261)"
This reverts commit 0bcb7839fb.
* Adding done_message to alert
Adding an optional entry to the config that will send a notification when an
alarm goes from on to off.
* Update test_alert.py
* Update test_alert.py
* Added camera service calls to arm/disarm the cameras. Entity id is optional so that with a single call we can arm all the cameras or specify a particular entity id to arm if applicable and possible in that camera type.
* Added camera service calls to arm/disarm the cameras. Entity id is optional so that with a single call we can arm all the cameras or specify a particular entity id to arm if applicable and possible in that camera type.
* Added camera service calls to arm/disarm the cameras. Entity id is optional so that with a single call we can arm all the cameras or specify a particular entity id to arm if applicable and possible in that camera type.
* Fixed the spaces and indentation related issues that houndci found
* Fixed the spaces and indentation related issues that houndci found
* Missed the const file which has the macros defined.
* Fixed the CI build error
* Fixed the CI build error because of unused variable in exception case
* Updating the arlo code based on comment from @balloob. Changed the arm and disarm to enable_motion_detection and disable_motion_detection respectively. Similarly fixed the AttributeError handling. Added dummy code to the demo camera also. Moved out the definitions in const.py into the camera __init__ file
* Fixed the comments posted by houndci-bot
* Fixed the comments posted by houndci-bot
* Fixed the comments posted by houndci-bot
* Fixed the comments posted by travis-ci integration bot
* Fixed the comments posted by travis-ci integration bot
* Fixed the comments posted by travis-ci integration bot for demo.py: expected 2 lines, found 1
* Updated code in camera __init__.py to use the get function instead of directly calling the member in the structure.
* Updated code in camera __init__.py
* Posting the updated code for PR based on @balloob's suggestions/recommendations
* Removed the arlo reference from demo code. Copy-paste error
* Removed the unused import found by hound bot
* Expected 2 lines before function, but found only 1.
* Based on @balloob's comments, moved these constants to the camera/arlo.py
* Added test_demo.py to test the motion enabled and motion disabled in camera component
* Fixing issues found by houndci-bot
* Fixing issues found by houndci-bot
* Fixing the code as per @balloob's suggestions
* Fixing the code as per @balloob's suggestions
* Fixing the test_demo failure. Tried to rewrite a base function to enable the motion in __init__.py and missed to add it to as a job.
* Fixing the hound bot comment
* Update arlo.py
* Update arlo.py
* Implement templates for covers
* Fix a few remaining pylint warnings
* Fix hound line-length warnings
* Fix one more hound line-length warning
* Fix quadruple-quotes an line length code-quality issues
* Irrelevant change to retrigger travis due to timeout
* Use volutuous Exclusive to check for mutex condition
* Fix incorrect state check
* Comfoconnect fan component.
* Fix linter. Don't store hass object when not needed.
* More code style.
* Rebase to dev and add to coverage ignore list.
* Use published package from pypi.
* Added invert flag for position for actuators that uses 100% for fully closed position
* Implementation of tilt functionality
* Bugfix check tilt
* Formatting
* Formatting fixes
* Formatting
* Bugfix set_tilt
* Minor modifications in configuration section
* Formatting
* Update knx.py
* add percentage (DPT_Scaling) KNX sensors
1. moved basic functionality to KNXSensorBaseClass instead of
KNXSensorFloatClass
2. added "if" clause in setup for a "percentage" sensor type and added KNXSensorDPTScalingClass
* support-knx-percentage-sensor: lint correction
Updated convert method base sensor class to avoid lint warning
(R201 - Method could be a function)
* added PLATFORM_SCHEMA for configuration
1. added SCHEMA extension for defined keywords
2. moved fixed data for internal settings out of sensor logic
3. moved everything into standard KNXSensor object
4. added parsing of extra config parameters in __init__
* correct lint errors on support-knx-percentage-sensor
* Fixed mqtt subscription filter on sys $ topics
* fixed linting issue
* added unit tests for $ topics and changed fix to use re.escape
* merge upstream/dev mqtt unit tests
* Update test_init.py
* LIFX: Move light effects to external library
This moves the LIFX light effects to the external library aiolifx_effects.
To get the light state synchronized between that library and HA, the LIFX
platform no longer maintains the light state itself. Instead, it uses the
cached state that aiolifx maintains.
The reorganization also includes the addition of a cleanup handler.
* Fix style
* Fix Plex component to use port number in discovery.
* Break line
* Correctly save port to config
* Handle port with fewer code changes
* This is stuck configuring and I'm not sure why
* Changes suggested by @dale3h
* Open Hardware Monitor sensor
Platform which is able to connect to the JSON API of Open Hardware Monitor and adds sensors for the devices.
* Remove copyright in header, not needed.
* - Removed old code
- Fixed typo’s in comments
- Removed log spamming
- Removed code that was unnecessary
- Use requests instead of urllib
- Moved sensor update functionality to data handler, to remove unwanted constructor parameters
* Fixed typo in comment
Added tests
* Added default fixture, to stabilize tests
* - Fix for values deeper than 4 levels, no longer relies on fixed level
- Fixed tests
* Removed timer in preference of helper methods
* Moved update functionality back to Entity….
Updated SCAN INTERVAL
* Added timeout to request
Removed retry when Open Hardware Monitor API is not reachable
Fixed naming of sensors
Flow optimalisations
Fixed tests to use states
* Remove unused import
* Initial commit for an Axis service to do Vapix calls to device
* Added check to see if metadatastream initiated properly
* Make sure to configure the correct IP address when setting up registered devices on system start
* Manage reconnection when device is discovered with a different IP
* Cleaned up setting new IP
* Better naming of event for new IP
* New version of dependency axis
* Fix flake8 failing
* Break out service default strings to constants
* Use the dispatcher and not the core event bus for internal communication
In trying to come up for some reason behind issue #6365 (which only
happens on some platforms) the best guess is that some components are
managing to get a string value all the way up to the Polymer UI for
temperature, which then an increment of +0.5 is treating as a string
concat operation instead of addition. So 20 + 0.5 becomes 200.5 hits
the max thermostat value.
This will throw an exception if the climate temp value isn't a
number. That's going to turn a soft fail into a hard fail on
potentially a number of platforms. Mysensors is one of the platforms
that was reported as having the issue. So put some explicit float
casts where that might be coming from as well.
Model CT50 has an "Auto" mode. When mode is set to auto we need to ask
what the current state is: cool or heat. Then we can query the
appropriate target temperature.
Without this fix, the target temperature shows up blank in the UI and
setting the mode fails.
* Uninstall enum34 in python3.6 docker image
This is a short term fix for #7733
What's happening is the following dependencies are pulling enum34:
- pygatt
- libsoundtouch
- yeelight
However, enum34 is not meant to be installed in Python versions 3.4+
and causing the `AttributeError: module 'enum' has no attribute 'IntFlag'``
I've submitted patches to these projects so we don't have to do this
manual uninstall in the future.
* Update Dockerfile
* Add ClickSend notify service.
* PR #8135 changes.
- Some code spacing fixes.
- Add timeout to requests.
- Change doc url.
- Use const.py as much as possible.
- Check credentials to determine if setup fails or not.
- Add docstrings.
- Use string formatting.
* PR #8135 changes.
- Remove unused variables.
- Continuation line under-indented for visual indent.
* PR #8135 changes.
- Format code based on PEP8.
* PR #8135 changes.
- Remove unused base64 dependency.
* PR #8135 changes.
- Fix: D205: 1 blank line required between summary line and description (found 0)
- Fix: standard import "import json" comes before "import requests"
* PR #8135 changes.
- Add files to .coveragerc
* Remove obvious comments and set constant
* added default parameter
* zone overlay can be set with or without a temperature and with or without a duration. Duration is not supported by hass
* Fixes issue #7059 with missing sensorDataPoints
* Fixes issue #6943 added ac_mode
* ac_mode cases
* added fan modes
* changed handling of device state OFF
* fixed an error initializing a dictionary (#6943)
* changed pytado version
* activated pytado debugging
* Changed pyTado version
* mytado.com changed authentication challenge
* Fixed linelength and whitespace issues
* requirements to pytado changed
When a openwrt router reboots, all the session ids gets invalidated.
In that case we need to log in again and get a new session id.
Signed-off-by: Anton Lundin <glance@acc.umu.se>
* Added rfxtrx binary sensors to a new branch
* binary_sensor/rfxtrx: added support for automatic_add
* Fixed pylint warnings
* off_delay is set wit clearer time specifiers (cv.time_period)
* fire_event config attribute is now supported by rfxtrx binary sensors.
* Cosmetic ordering
* Fix lint errors for PR requirements.
* Fixed indents, line length and comment problems.
* Yet another line too long fix...
* Using existing attributes and config constants.
* Cosmetic fix (ATTR_DATABITS -> ATTR_DATA_BITS)
* Removed unused attribute
* FIX masked device id logging message
* FIX line too long
* FIX trailing white space
* FIX: rfxtrx binary_sensor manages its own devices only.
* Added a basic config helper for pt2262 devices
* Make pylint happy
* Fixed most houndci-bot-detected issues
* Fix TOX complaint about blank line after function docstring
* Fix data bit value calculation
* Fixed line too long
* Removed unnecessary code.
* remove trailing whitespace
* Added hass property to device object.
* Use netdisco to automatically discover harmony hubs.
* Allow some settings in configuration.yml to override even on discovered hubs.
* Global is not required as no assignment on variable
* Use `set` instead of list for perf
* Store cache of discovered devices against `hass.data` rather than in global
* Handle case if the device cache is empty
* Fix indentation issue
* Configurable fade-out behavior
Adds a per-group "fade" option with values of "out" (default) or "none".
By default, the lights are faded out when turned off, but this can cause usability issues when manually switching wall switches, since the bulbs turn back on at minimum brightness.
* Changed fade value from enum to boolean
* No need to fall back to default since voluptuous takes care of that.
* Update InfluxDB to handle datetime objects
Updates the InfluxDB regex to ignore datetime objects being coverted
into float values.
Adds tests to the component to ensure datetime objects are corectly
handled.
* Fix Hound errors
Fixes errors from Hound bot
* Update InfluxDB to handle multiple decimal points
Changes the way InfluxDB handles values such as 1.2.3.4 to be 1.234 so
it stores in InfluxDB as a valid float value
* Fix lint issues
Reduce the size of a line for the linter
* Update InfluxDB to pass on unknown variable
If we get an error trying to convert a variable to a float, let's ignore
it completely
* Make InfluxDB Regex constants
Makes the Regex's used by InfluxDB constants so they don't need to be
compiled each time
* cleanup
* fix lint
* Update regex
* fix tests
* Fix JSON body missing new line character
* fix exceptions
* Fix lights issue #8098
* Don't check self._color to decide whether to calll get_color()
self._color is None on init, so get_color() will never be called.
We only want to know which of the DHCP clients are indeed active.
For example: I've a table of static DHCP leases with most of the IPs of my network, so this module is always detecting them as present. With my patch only the active ones will be detected as present.
I already mentioned here: https://github.com/home-assistant/home-assistant/pull/7366#issuecomment-302950139
* Update InfluxDB to handle datetime objects
Updates the InfluxDB regex to ignore datetime objects being coverted
into float values.
Adds tests to the component to ensure datetime objects are corectly
handled.
* Fix Hound errors
Fixes errors from Hound bot
* Update InfluxDB to handle multiple decimal points
Changes the way InfluxDB handles values such as 1.2.3.4 to be 1.234 so
it stores in InfluxDB as a valid float value
* Fix lint issues
Reduce the size of a line for the linter
* Update InfluxDB to pass on unknown variable
If we get an error trying to convert a variable to a float, let's ignore
it completely
* Make InfluxDB Regex constants
Makes the Regex's used by InfluxDB constants so they don't need to be
compiled each time
* cleanup
* fix lint
* Update regex
* fix tests
* Fix JSON body missing new line character
* fix exceptions
* Fix lights issue #8098
* Don't check self._color to decide whether to calll get_color()
self._color is None on init, so get_color() will never be called.
* add knx cover
also corrected bugs in device config
1. overwriting of addresses in KNXMultiAddressDevice
2. setting and getting int values
3. added percentage scaling
* Update __init__.py
* Add support for Insteon FanLinc fan
* Upgrade insteonlocal dependency to 0.49
* Lint/flake fixes
* Remove configurator
* Make Hound fixes
* Revert "Make Hound fixes" and "Remove configurator"
This reverts commit 04d1f7fdb1.
This reverts commit 7b8278d7cf.
* make port mapping optional
* dependencies + improvements
* Added bytes and packets sensors from IGD
* flake8 check
* new sensor with upnp counters
* checks
* whitespaces in blank line
* requirements update
* added sensor.upnp to .coveragerc
* downgrade miniupnpc
Latest version of miniupnpc is 2.0, but pypi only has 1.9
Fortunately it is enough
* revert to non async
miniupnpc will do network calls, so this component can’t be moved to
coroutine
* hof hof
forgot to remove import ot asyncio
* handle TransportError exceptions when calling JSONRPC API
* use double quotes for log messages; show TransportErrors as in async_ws_connect
* fix spaces around keyword / parameter
* fix logging message
* review changes
This will allow for dynamically updating weather states, for instance if
you wanted to use the latitude and longitude of a phone or other device
to get the weather for your current location.
Vera devices are reporting battery levels as a sting by appending a
percentage sign (%) on the end.
To make the Vera component act like other Home Assistant components,
let's remove the percentage sign from the battery report levels so that
we only display the battery level.
This may be a "breaking change" if people are relying on the Vera
battery levels to be a string instead of an int. However, this will make
the battery level reports compatible with everything else.
* Use standard entity_ids for zwave entities
* Include temporary opt-in for new entity ids
* Update link to blog post
* Update tests
* Add old entity_id as state attribute
* Expose ZWave value details
* Update tests
* Also show new_entity_id
* Just can't win with this one
* Use standard entity_ids for zwave entities
* Include temporary opt-in for new entity ids
* Update link to blog post
* Update tests
* Add old entity_id as state attribute
* Expose ZWave value details
* Update tests
* Also show new_entity_id
* Just can't win with this one
* Setup to send component data is option is enabled
* testcases, as well as moved to a single boolean, passed to the function
* fixed pep8 failures
* Clarify config option.
* Adding support for https.
This change allows to access a firetv-server instance that runs over https (via a reverse proxy for exemple).
Default stays http, but if `ssl: true` is set in the configuration the connection goes over https.
Successfully tested.
* respecting the 79 characters line limit
* Fixed the Wind sensor following new release of netatmo-api-python
The NetAtmo PR was at:
https://github.com/jabesq/netatmo-api-python/pull/5
Essentially, this commit adds a protection when adding an incorrect
monitored conditions to avoid to fail the entire NetAtmo component,
plus for consistency reasons all conditions are now in lower case.
* Fixes following the CI tests
* blink: the existing 50/50 flashing between base color and effect color
* breathe: a lifx_effect_breathe replacement
* ping: mostly base color with a short flash at the end of the cycle
* strobe: dark base color and short cycles by default
* solid: temporary color change, base color never visible
Adding a service call for each mode is a bit extravagant so instead
lifx_effect_breathe has been folded in as an option and that service
call is deprecated.
* Allow device tracker platforms to specify picture
* Allow device tracker to specify icon during discovery
* Clean up and add tests
* Fix lint
* Fix test
* Make percentage string values as floats in InfluxDB
Currently Z-wave and other compontents report an attributes battery
level as an integer, for example
```yaml
{
"is_awake": false,
"battery_level": 61,
}
```
However, some other components like Vera add the battery level as a
string
```yaml
{
"Vera Device Id": 25,
"device_armed": "False",
"battery_level": "63%",
"device_tripped": "False",
}
```
By removing any % signs in the field, this will send the value to
InfluxDB as an int, which can then be used to plot the data in graphs
correctly, like other percentage fields.
* Add tests and remove all trailing non digits
Adds tests and now removes all trailing non-numeric characters for
better use
* Update variable name for InfluxDB digit checks
Updates the variable used for the regex to remove trailing non digits
* Fix linting errors for InfluxDB component
Fixes a small linting error on the InfluxDB component
* dismiss service for persistent notifications
Unnecessary notifications can now be removed automatically. Added a
dismiss service to remove persistent notifications via script and/or
automation.
* removed unnecessary loop
loop removed
* Add color_util.color_hsv_to_RGB
* Use helper functions for LIFX conversions
The LIFX API uses 16 bits for saturation/brightness while HA uses 8 bits.
Using helper functions makes the conversion a bit nicer and less prone
to off-by-one issues.
The colorsys library uses 0.0-1.0 but we can avoid that by using the HA
color_util converters instead.
* initial commit
* class name and requirements_all.txt
* removed mentions of D7050
* changed default name
* catch oserror in update, travis errors.
* use nad_receiver pip version
* update coveragerc
* Add initial version
* Fix requirements
* Prefer logging over printing
* Set executor thread name on >Py36 only
* Add tests
* Lint
* Add restrictedpython to test dependencies
* Create python_script.py
From doc:
```
However, an empty dict ({}) is treated as is. If you want to specify a list that can contain anything, specify it as dict:
>>> schema = Schema({}, extra=ALLOW_EXTRA) # don't do this
>>> try:
... schema({'extra': 1})
... raise AssertionError('MultipleInvalid not raised')
... except MultipleInvalid as e:
... exc = e
>>> str(exc) == "not a valid value"
True
>>> schema({})
{}
>>> schema = Schema(dict) # do this instead
>>> schema({})
{}
>>> schema({'extra': 1})
{'extra': 1}
```
* Revert "Update to dsmr_parser supporting v5 arguments."
This reverts commit 3567de4b90.
* Revert "Using dev branch until released upstream."
This reverts commit 53e8de112c.
* Revert "Give good example."
This reverts commit 4f90fc4be6.
* Revert "Allow configuring DSMR5 protocol."
This reverts commit 9fa0e14187.
* Update pysesame requirement to 0.1.0 to support caching
* Set `available` property based on API enabled status
* Add state attributes for device ID and battery level
* osram lightify removed duplicated set in case of brightness changes
* lightify component: anticipate brightness evaluation to handle unconsidered scenario described in the PR request comments (light turned on with color/temperature)
* Correction for travis ci error:
undefined name 'transition'
SHOW DIAGNOSTICS always needs admin privileges on influxdb. For
the purposes of home-assistant this is too much.
Use 'SHOW SERIES' to have a relatively lightweight query which
only needs READ privileges.
* add option to display all sources / pushed to version 0.4.3 of library
* Add show_all_sources option for auto discovery too
* change code style for hass
* fix lint
* Add support for Vanderbilt SPC alarm panels.
* Arm/disarm + read state
* Autodiscover and add motion sensors
* Fix code formatting.
* Use asyncio.async for Python < 3.4.4.
* Fix for moved aiohttp exceptions.
* Add docstrings.
* Fix tests and add docstrings.
* Added buienradar sensor and weather
* used external library for parsing
* used external library for parsing
* updated buienradar lib to 0.4
* Make sure you import 3rd party libraries inside methods.
* Make sure you import 3rd party libraries inside methods.
* clean up code; optimized
* imports, sensor name and attributes
* updated requirements to match imports
* use asyncio for http get
* Add service to set nest away/home modes
* New service `nest.set_mode`
* Update the NestDevice object to export the local structures
* Validation and structure cleanup
* Revert "Update to dsmr_parser supporting v5 arguments."
This reverts commit 3567de4b90.
* Revert "Using dev branch until released upstream."
This reverts commit 53e8de112c.
* Revert "Give good example."
This reverts commit 4f90fc4be6.
* Revert "Allow configuring DSMR5 protocol."
This reverts commit 9fa0e14187.
* Added effects to Yeelight bulbs
* Fix Typo and Use randint instead of randrange
* Added Effects
* updated requirements_all.txt
* fix empty line
* minor fixes
* fix passing effects as parameter
* Fix#7758 subscription expiration/removal
Removes a subscription after receiving an HTTP 410 response when trying to send a new message.
* Fix tests failing due to additional call
* Fix code style
* Lint
* Check if media commands are actually applicable
- Explicitly allow ‘stop’ and ‘play’ on radio streams
- Disallow media commands when the playlist is empty
- Check if command is supported when calling `turn_on` and `turn_off`
* Suppress UPnP error 701 on media commands
* Clean up soco_filter_upnperror
Clean up soco_filter_upnperror and fix small bug in support_previous_track determination
* Start of migration framework, to allow moving of files in the config directory to be hidden, ios.conf used as the first one to undergo this change.
* Update const.py
* Update test_config.py
* improvement to syntax
* log time delay of domain setup in info level
* when setup problems appear, it's difficult to debug which are the components that took a lot to set up. This minimal change goes further than the 'slow setup warning' and measures the setup time interval for each domain.
* use timer as in helpers/entity
* Introduced support to Netgear Arlo Cameras
* Using async_setup_platform() and applied other changes
* Removed unecessary variables
* Using asyncio for sensor/arlo
* Update arlo.py
* Removed entity_namespace
Downgrades the Dockerfiles used by Home Assistant to Python 3.5, after
Python 3.6 base image was causing segmentation faults.
See home-assistant/home-assistant#7752
* Show persistent error if cover.myq fails
* Fixed typo on getLogger()
* Added ValueError on except condition
* Make pylint happy
* Removed DEFAULT_ENTITY_NAMESPACE since it is not being used
* Add `name` var to BytesIO content to get recognized
Sometimes the python-telegram-bot doesn't recognize the mimetype of the file and looks after a name variable to deduce it. Fixes#7413
* bytesio stream recycle less explicit
* Rachio platform started
* Rachio tests
* detect bad api token
* Documentation, Code cleanup
* Docstrings end with a period, log uses %
* Fix arguments, default run time is now 10 minutes
* Fix typo, remove todo (GH issue exists)
* Revert polymer submodule commit
* Use a RachioPy version with SSL cert validation
* Update requirements
* first commit
* first commit
* first commit
* first commit
* changing requirements
* updated requirements_all.txt
* various changes as suggested in the comments.
* using global values for dict keys.
* Remove setting up an hbmqtt broker
* Don't pass loop to web.Application in tests
* Use .query instead of deprecated .GET for aiohttp requests
* Fix closing file resource
* Do not use asyncio mark
* Notify.html5 - PyJWT: Use options to disable verify
* Yamaha: Test was still using deprecated ip
* Remove pytest-asyncio
* fix double template rendering when messages come from notify.telegram
* fix 'chat' information not present in callback queries
* better inline keyboards with yaml
To make a row of InlineKeyboardButtons you pass:
- a list of tuples like: `[(text_b1, data_callback_b1), (text_b2, data_callback_b2), ...]
- a string like: `/cmd1, /cmd2, /cmd3`
- or a string like: `text_b1:/cmd1, text_b2:/cmd2`
Example:
```yaml
data:
message: 'TV is off'
disable_notification: true
inline_keyboard:
- TV ON:/service_call switch.turn_on switch.tv, Other:/othercmd
- /help, /init
```
* fix send file to multiple targets
* fix message templating, multiple file targets, HA cameras
- Allow templating for caption, url, file, longitude and latitude fields
- Fix send a file to multiple targets
- Load data with some retrying for HA cameras, which return 500 one or two times sometimes (generic cams, always!).
- Doc in services for new inline keyboards yaml syntax: `Text button:/command`
* HttpDigest authentication as proposed in #7396
* review changes
- Don't use `file` as variable name.
- For loop
- Simplify filter allowed `chat_id`s.
* Don't use `file` as variable name!
* make params outside the while loop
* fix chat_id validation when editing sent messages
Using `python setup.py develop` did not manage to install the required dependencies.
This updates `script/setup` to use `pip install -e .` instead in order to resolve the required dependencies.
* starting light template component
* linting/flaking
* starting unit tests from copypasta
* working on unit testing
* forgot to commit the test
* wrapped up unit testing
* adding remote back
* updates post running tox
* Revert "adding remote back"
This reverts commit 852c87ff96.
* adding submodule back from origin
* updating submodule
* removing a line to commit
* re-adding line
* trying to update line endings
* trying to fix line endings
* trying a different approach
* making requested changes, need to fix tests
* flaking
* union rather than intersect; makes a big difference
* more tests passing, not sure why this one's failing
* got it working
* most of the requested changes
* hopefully done now
* sets; the more you know
* Added new commands and functionality to the harmony remote component.
-This includes the ability to optionally specify a number of times to repeat a specific command, such as pressing the volume button multiple times.
-Also added a new command that allows you to send multiple commands to the harmony at once, such as sending a set of channel numbers.
-Updated the unit tests for these changes.
* Fix flake8 coding violations
* Remove send_commands command and make send_command handle a single or list of commands
* Remove send_commands tests
* Update itach and kira remotes for new send_command structure. Fix pyharmony version in requirements_all.txt
* Fix incorrect variable name
* Fix a couple minor issues with remote tests
* Redesign monitored variables
Allow generating specific sensors without the need for template sensors
* Import 3rd party library inside update method
* Remove jsonpath_rw dependency
* Do not interfere with value_template or ilo_data output
Do not interfere with value_template or ilo_data output, this is now the responsibility of the user and should be handled in `configuration.yaml`
Fix UnusedImportStatement
Fix newline after function docstring
* Always output results to state
The product type is already established in order to decide the Kelvin range
so just reuse that information to disable color features for white-only lights.
Also change the breathe/pulse effects to be more useful for white-only
bulbs. For consistency, color bulbs set to a desaturated (i.e. white-ish)
color get the same default treatment as white-only bulbs.
* Make ssh and telnet connections continuous in asuswrt
* Refactored SSH and Telnet connections into respective classes.
* Fixed several copy-paste typos and errors.
* More typos fixed.
* Small changes to arguments, to pass automated tests.
* Removed unsupported named arguments.
* Fixed a couple of mistakes in Telnet, and other lint errors.
* Added Telnet tests, and added lint exceptions.
* Removed comments from tests, as they irritated the hound.
If OpenWRT isn't running the DHCP server then some OpenWRT hardware,
such as TP-Link TL-WDR3600 v1, can't determine the host
corresponding to an associated wifi client. This change handles that
by returning None when the request has no data in the result.
* bugfix for Telegram chat_ids
- Negative `chat_id`s for groups.
- Include `chat_id` in event data.
- Handle KeyError when receiving other types of messages, as `new_chat_member` ones, and send them as text.
* unused import
* fix double quote style, fix boolean expr, change warning msg
* mistake
* some more fixes
- fix if condition for msg bad fields.
- return True for a correct but not allowed or not recognized message: if not, the message arrives continuously.
- Allow to receive messages from unauthorized users if they come from authorized groups.
* support for `edited_message`s
- They come as normal messages, except for the 'edited_message' field instead of 'message'.
If OpenWRT isn't running the DHCP server then some OpenWRT hardware,
such as TP-Link TL-WDR3600 v1, can't determine the host
corresponding to an associated wifi client. This change handles that
by returning None when the request has no data in the result.
* bugfix for Telegram chat_ids
- Negative `chat_id`s for groups.
- Include `chat_id` in event data.
- Handle KeyError when receiving other types of messages, as `new_chat_member` ones, and send them as text.
* unused import
* fix double quote style, fix boolean expr, change warning msg
* mistake
* some more fixes
- fix if condition for msg bad fields.
- return True for a correct but not allowed or not recognized message: if not, the message arrives continuously.
- Allow to receive messages from unauthorized users if they come from authorized groups.
* support for `edited_message`s
- They come as normal messages, except for the 'edited_message' field instead of 'message'.
Prior to this change the zoneminder component was attempting to
use logging.exception outside of exception handling code. This
would lead to the traceback module throwing an exception when
trying to work out the traceback for the exception.
This fixes the issue by changing the exception call into a
plain error logging call.
* Implemented ffmpeg option on Amcrest camera and upgraded to version 1.2.0
* Added ffmpeg arguments and binary options to Amcrest camera
* Added ffmpeg as dependencies
* Makes lint happy and fixed requirements_all.txt
* Inherent the ffmpeg.binary configuration from ffmpeg component
* Update amcrest.py
* Ignore attribute changes in automation trigger from/to
* Quote names in deprecation warnings
This makes it somewhat easier to read if the suggestion happens to be
named "to".
* Add test with same state, new attribute value
* Remove global hass
* Http.auth test no longer spin up server
* Remove server usage from http.ban test
* Remove setupModule from test device_sun_light_trigger
* Update common.py
* # This is a combination of 3 commits.
# The first commit's message is:
Add seperate zwave panel
# The 2nd commit message will be skipped:
# unused import
# The 3rd commit message will be skipped:
# Use get for config
* Add seperate zwave panel
* Modify set_config_parameter to accept setting string values
* descriptions
* Tweaks
* Tweaks
* Tweaks
* Tweaks
* lint
* Fallback if no config parameteres are available
* Update services.yaml
* review changes
* # This is a combination of 3 commits.
# The first commit's message is:
Add seperate zwave panel
# The 2nd commit message will be skipped:
# unused import
# The 3rd commit message will be skipped:
# Use get for config
* Add seperate zwave panel
* Modify set_config_parameter to accept setting string values
* descriptions
* Tweaks
* Tweaks
* Tweaks
* Tweaks
* lint
* Fallback if no config parameteres are available
* Update services.yaml
* review changes
* Implemented ffmpeg option on Amcrest camera and upgraded to version 1.2.0
* Added ffmpeg arguments and binary options to Amcrest camera
* Added ffmpeg as dependencies
* Makes lint happy and fixed requirements_all.txt
* Inherent the ffmpeg.binary configuration from ffmpeg component
* Update amcrest.py
* Kodi specific services to call Kodi API methods
- new service: `kodi_execute_addon` to run a Kodi Addon with optional parameters. Results of the Kodi API call, if any, are redirected in a Home Assistant event: `kodi_execute_addon_result`.
- new service: `kodi_run_method` to run a Kodi JSONRPC API method with optional parameters. Results of the Kodi API call are redirected in a Home Assistant event: `kodi_run_method_result`.
- Add descriptions in services.yaml.
- Add `timeout` parameter to yaml config (needed to make slow queries to the JSONRPC API, default timeout is set to 5s).
- Trigger events with the results of the Kodi API calls, with:
```
event_data = {
'result': api_call_results,
'result_ok': boolean,
'input': api_call_parameters,
'entity_id': 'media_player.kodi'}
```
* no need to clean OrderedDicts; no need for the `kodi_execute_addon` service
* no need for the `kodi_execute_addon` service
* unused import
* naming changes
* Refactor color profiles to a class
* Refactor into preprocess_turn_on_alternatives
* LIFX: use light.preprocess_turn_on_alternatives
This avoids the color_name duplication and gains support for profile.
* Add kelvin parameter to light.turn_on
* Add brightness_pct parameter to light.turn_on
* LIFX: accept brightness_pct in effects
* Add test of kelvin/brightness_pct conversions
* Add sonos alarm clock update service
* Add tests and break lines
* Fix style errors
* Make test work with python<3.6
* Fix last two pylint errors
* fix new line to long errors
* SMTP notify enhancements: HTML emails and customization options
- Send full HTML emails, with or without inline attached images.
- Custom `timeout`.
- Custom `product_name` identifier for the `FROM` and `X-MAILER` email headers.
- New HTML email test
* `sender_name` instead of product_name
- Change `sender_name` instead of `product_name`.
- No changes in `X-Mailer` header.
- `From` header as always unless you define the new `sender_name` parameter.
* No longer require pyunify during tests
* No longer require cast during tests
* No longer required dependency for tests
* No longer require pymochad for tests
* Astral is a core dependency
* Avoid having to install datadog dependency during tests
* CMUS test doesn't test anything
* Frontier Silicon doesn't test anything
* No longer require mutagen
* Update requirements_test_all.txt
* Remove stale comment
* Fix Kodi specific services, add descriptions, add more handled exceptions
- Fixes issue #7528
- Add descriptions for Kodi specific services in services.yaml.
- Error handling in Kodi API errors.
- Make compatible the existent specific service `media_player.kodi_set_shuffle` with the general `media_player.shuffle_set` service (both use the same method but with different named parameter, I think the Kodi specific service should be eliminated, since it is not)
* fix line too long
* removed new services (for another PR); removed `kodi_set_shuffle` service
* requested changes
- Removed `kodi_set_shuffle` service.
- Optional `media_name` and `artist_name` parameters. `media_name` defaults to 'ALL'.
- Guard clause to check if the services are already registered.
Bumped blink version to support automatic reauthorization when tokens expire. Changed the battery sensor call to a string version so that the battery reports back "Low" or "OK" rather than a cryptic integer
* Initialize sun with unknown values.
Initial values should be `unknown` instead of `0`. Otherwise on HA restart the value of `0` is pushed to metrics databases (graphite/influx/recorder).
* Update sun position before emitting initial update
* Simplify based on armills comment.
* Use provided time for calculation.
* Added raspihats binary_sensor platform
* Updated .coveragerc to ommit raspihats platforms.
* Using vol.Coerce(int) for validation and casting of I2CHat config address
* Move service helpers to LifxManager
* Add lifx_set_color
This is a synonym for light.turn_on except it does not actually turn on the
light unless asked to.
Thus, turn_on can be implemented just by asking.
* Rename set_color to set_state
* Support power=False with lifx_set_state
* Added Axis hub, binary sensors and camera
* Added Axis logo to static images
* Added Axis logo to configurator
Added Axis mdns discovery
* Fixed flake8 and pylint comments
* Missed a change from list to function call
V5 of axis py
* Added dependencies to requirements_all.txt
* Clean up
* Added files to coveragerc
* Guide lines says to import function when needed, this makes Tox pass
* Removed storing hass in config until at the end where I send it to axisdevice
* Don't call update in the constructor
* Don't keep hass private
* Unnecessary lint ignore, following Baloobs suggestion of using NotImplementedError
* Axis package not in pypi yet
* Do not catch bare excepts. Device schema validations raise vol.Invalid.
* setup_device still adds hass object to the config, so the need to remove it prior to writing config file still remains
* Don't expect axis.conf contains correct values
* Improved configuration validation
* Trigger time better explains functionality than scan interval
* Forgot to remove this earlier
* Guideline says double qoutes for sentences
* Return false from discovery if config file contains bad data
* Keys in AXIS_DEVICES are serialnumber
* Ordered imports in alphabetical order
* Moved requirement to pypi
* Moved update callback that handles trigger time to axis binary sensor
* Renamed configurator instance to request_id since that is what it really is
* Removed unnecessary configurator steps
* Changed link in configurator to platform documentation
* Add not-context-manager (#7523)
* Add not-context-manager
* Add missing comma
* Threadsafe configurator (#7536)
* Make Configurator thread safe, get_instance timing issues breaking configurator working on multiple devices
* No blank lines allowed after function docstring
* Fix comment Tox
* Added Axis hub, binary sensors and camera
* Added Axis logo to static images
* Added Axis logo to configurator
Added Axis mdns discovery
* Fixed flake8 and pylint comments
* Missed a change from list to function call
V5 of axis py
* Added dependencies to requirements_all.txt
* Clean up
* Added files to coveragerc
* Guide lines says to import function when needed, this makes Tox pass
* Removed storing hass in config until at the end where I send it to axisdevice
* Don't call update in the constructor
* Don't keep hass private
* Unnecessary lint ignore, following Baloobs suggestion of using NotImplementedError
* Axis package not in pypi yet
* Do not catch bare excepts. Device schema validations raise vol.Invalid.
* setup_device still adds hass object to the config, so the need to remove it prior to writing config file still remains
* Don't expect axis.conf contains correct values
* Improved configuration validation
* Trigger time better explains functionality than scan interval
* Forgot to remove this earlier
* Guideline says double qoutes for sentences
* Return false from discovery if config file contains bad data
* Keys in AXIS_DEVICES are serialnumber
* Ordered imports in alphabetical order
* Moved requirement to pypi
* Moved update callback that handles trigger time to axis binary sensor
* Renamed configurator instance to request_id since that is what it really is
* Removed unnecessary configurator steps
* Changed link in configurator to platform documentation
* No blank lines allowed after function docstring
* No blank lines allowed after function docstring
* Changed discovery to use axis instead of axis_mdns
* Travis CI requested rerun of script/gen_requirements_all.py
* Support adding different server locations
* Rename variables and move CONF_ const into component as requested in review
* Fix unittests
* Forgot to add tests for microsoft_face_identify
* ps - do not install all dependencies
* Comment out blinkt because it depends on GPIO
* Add pip upgrade check back
* Disable import error blinkt
* Update comment
* Fix comment
* Generate a new updateDate with every call
This should fix#7459
Tests need to be updated in another commit.
* Replace STATIC_TIME with datetime object check
Removing the "DATE" argument from the Alexa component's configuration (because it is now dynamically generated) requires this commit's changes to the test cases to check that the updateDate data is a datetime type rather than a specific hardcoded value ('2016-10-10T19:51:42.0Z').
* Fix brackets
* Make Configurator thread safe, get_instance timing issues breaking configurator working on multiple devices
* No blank lines allowed after function docstring
* Fix comment Tox
* telegram_bot and notify.telegram enhancements:
- Receive callback queries and produce `telegram_callback` events.
- Custom reply_markup (keyboard or inline_keyboard) for every type of message (message, photo, location & document).
- `disable_notification`, `disable_web_page_preview`, `reply_to_message_id` and `parse_mode` optional keyword args.
- Line break between title and message fields: `'{}\n{}'.format(title, message)`
- Move Telegram notification services to `telegram_bot` component and forward service calls from the telegram notify service to the telegram component, so now the `notify.telegram` platform depends of `telegram_bot`, and there is no need for `api_key` in the notifier configuration. The notifier calls the new notification services of the bot component:
- telegram_bot/send_message
- telegram_bot/send_photo
- telegram_bot/send_document
- telegram_bot/send_location
- telegram_bot/edit_message
- telegram_bot/edit_caption
- telegram_bot/edit_replymarkup
- telegram_bot/answer_callback_query
- Added descriptions of the new notification services with a services.yaml file.
- CONFIG_SCHEMA instead of PLATFORM_SCHEMA for the `telegram_bot` component, so only one platform is allowed.
- Async component setup.
* telegram_bot and notify.telegram enhancements: change in requirements_all.txt.
* # This is a combination of 3 commits.
# The first commit's message is:
Add seperate zwave panel
# The 2nd commit message will be skipped:
# unused import
# The 3rd commit message will be skipped:
# Use get for config
* Add seperate zwave panel
* more info
* Add usercodeview
* Improve api
* Improve api
* Separate api into own file.
* disable missing import
* review changes
* Tests 1
* Verify that we fetch data from groups
* Tests groups
* config 1
* usercode 1
* Api mods
* Tweak API
* docstrings
* 100% api testing
* Refactor sun component for correctness
* Convert datetimes to dates for astral
* Fix tests for updated code
* Fix times now that calcs are fixed
* Move sun functions to helpers
* Fix flake on new file
* Additional tweaks from review
* Update requirements
The hue is now a float but the hsbk conversion still believed it to be
an integer that could not be larger than 359. The float can in fact be,
for example, 359.9 and this would cause an out-of-bounds error in the
set_color call.
For completeness, the initial hue is also changed to a float.
* Fix plant MIN_TEMPERATURE, MAX_TEMPERATURE validation
small_float only allows values from 0 to 1 so we should use float instead
* Do not use vol.All for a single validation
* Fix plant MIN_TEMPERATURE, MAX_TEMPERATURE validation
small_float only allows values from 0 to 1 so we should use float instead
* Do not use vol.All for a single validation
#7429 describes a TypeError that is raised if the port is omitted in the config for the KNX component (integer is required (got type str)). This commit changes the default port from a string to an integer. I expect this will resolve that issue...
#7429 describes a TypeError that is raised if the port is omitted in the config for the KNX component (integer is required (got type str)). This commit changes the default port from a string to an integer. I expect this will resolve that issue...
* Remove default zwave config path
PYOZW now has much more comprehensive default handling for the config
path (in src-lib/libopenzwave/libopenzwave.pyx:getConfig()). It looks in
the same place we were looking, plus _many_ more. It will certainly do a
much better job of finding the config files than we will (and will be
updated as the library is changed, so we don't end up chasing it). The
getConfig() method has been there for a while, but was subsntially
improved recently.
This change simply leaves the config_path as None if it is not
specified, which will trigger the default handling in PYOZW.
* Install python-openzwave from PyPI
As of version 0.4, python-openzwave supports installation from PyPI,
which means we can use our 'normal' dependency management tooling to
install it. Yay.
This uses the default 'embed' build (which goes and downloads
statically sources to avoid having to compile anything locally). Check
out the python-openzwave readme for more details.
* Add python-openzwave deps to .travis.yml
Python OpenZwave require the libudev headers to build. This adds the
libudev-dev package to Travis runs via the 'apt' addon for Travis.
Thanks to @MartinHjelmare for this fix.
* Update docker build for PyPI openzwave
Now that PYOZW can be install from PyPI, the docker image build process
can be simplified to remove the explicit compilation of PYOZW.
* Add new raspihats component
* added raspihats to COMMENT_REQUIREMENTS in gen_requirements_all.py
* disabled pylint import errors
* using hass.data for storing i2c-hats manager
Recent aiolifx allow sending messages to unregistered devices (as a
no-op). This is handy because bulbs can disappear anytime we yield and
constantly testing for availability is both error-prone and annoying.
So keep the aiolifx device around until a new one registers on the same
mac_addr.
State restoration takes up to a second because bulbs can be slow to react.
During this time an effect could keep running, overwriting the state that we
were trying to restore.
Now the effect forgets the light immediately and it thus avoids further
changes while the restored state settles.
Forcing a refresh will log a warning if the periodic async_update happens
to be running already.
So let's do the refresh locally and remove the force_refresh.
This clears the internal cache in case polling picked up the state as set by
an effect.
For example, aborting an effect by selecting a new brightness could keep a
color set by the effect.
Recent aiolifx allow sending messages to unregistered devices (as a
no-op). This is handy because bulbs can disappear anytime we yield and
constantly testing for availability is both error-prone and annoying.
So keep the aiolifx device around until a new one registers on the same
mac_addr.
* Added osramlighrify groups.
Allows you to make use of the build in osram lightify groups. Group states get
handeled similar as in the case of phillips hue. A lightify group shows up as
light in the homeassistant webinterface. If one light of the
group is on, the complete group is considered to be on.
To use this feature, first define some groups within your lighrify bridge, then
set add `allow_lightify_groups=true` to you osramlightify config.
It might look like:
````yaml
- platform: osramlightify
host: IP-ADDRES
allow_lightify_groups: true
```
* Fixed Pylint errors.
* Included requests.
* Included more requests.
* Fixed setup bridge and removed _light attribute.
* Update osramlightify.py
Forcing a refresh will log a warning if the periodic async_update happens
to be running already.
So let's do the refresh locally and remove the force_refresh.
State restoration takes up to a second because bulbs can be slow to react.
During this time an effect could keep running, overwriting the state that we
were trying to restore.
Now the effect forgets the light immediately and it thus avoids further
changes while the restored state settles.
This clears the internal cache in case polling picked up the state as set by
an effect.
For example, aborting an effect by selecting a new brightness could keep a
color set by the effect.
* Convert automatic device tracker to push updates
* Update test
* Add to coveragerc
* Fire hass events when automatic update received
* Change brace indentation
* Add Sensibo climate platform
* Force update after running a service
* Add sensibo to .coveragerc
* Use 10s timeout
* Fix schema. Remove print.
* Better handle unit conversions.
This allows for more of a disco mode where lights change so fast that you
actually notice it.
Also change the valid period to the maximum 20 msgs/sec that LIFX bulbs
can handle.
First, move the default away from turn_on so we do not have to test for
the current service.
Next, change the default color away from random. The new default is that
saturated colors will flash white and desatured colors will flash to their
fully satured color. Always with full brightness.
After many experiments, this was the method that best produced results that
are both visually pleasing and always noticeable as a flash.
* correct MQTT subscription filter
* wildcard handling (#) fixed
* wildcard handling (#) fixed
* added tests for topic subscription like +/something/#
* function names changed (line too long)
* using raw strings for regular expression
import order changed
* OpenGarage.io support
Cleaned up component and ran lint checking
* Fixing lint errors
* Added supported_features and device_class
* Added timeout to HTTP Requests and other changes based on feedback.
* Removed watcher. It provided little value and could cause issues if status was stuck in a state.
* Changes based on feedback. Added error checking for invalid device_key.
* Lint
* add support for shuffle toggling on Spotify component.
this also required adding support for shuffle on the
media_player component.
* lint
* Use ATTR_MEDIA_SHUFFLING for service handler param
* Line too long fix
* fix tests
* add shuffle set to demo mediaplayer
* rename shuffle attribute
* new implementation without mqtt
* fixed lint findings
* fixed more lint findings
* fixed final flak8 error
* added unit tests for platform "plant"
* - changed status to "OK" / "problem"
- added attribute "problem" with details on the problems
- removed unused constant
- setting icon to "?" until we have meaningful data
* reformatted code to meet line length requirements
* binary_sensor.workday: fix handling of states vs provinces
* Add test cases for workday sensor with states
* remove redundant assignment
* Repair unit test to improve coverage
Patch from Wolf-Bastian Pöttner
* Fix handling of invalid states/provinces
* fix indentation to satisfy pylint
* - changed updater to only do updated if they succed and handle calls when tv is off better by only doing 1 remote call
- show all sources instead of only connected, to fix source selection when unit is powered off
- fixed sources so they can launch apps and select sources
* fixed lint errors
* show all sources and apps if no custom options are defined in the conf
* fixed indentation for lint
* set _current_source when state is off and fixed timeout exception
* Flux switch: avoid updates when off
Calling turn_on when the switch is already on would orphan the existing
time tracker, losing our ability to cancel it when turn_off is called.
* Cleanups
The self.is_on property can now be found from self.unsub_tracker, so
get rid of the self._state attribute.
Add an entry guard to turn_on, making further conditionals unnecessary.
* light.sensehat: adding plugin to control the 8x8 LED matrix on a Sense Hat
* add new .coveragerc entry
* light.sensehat: formatting and removing unused import
* light.sensehat: add to requirements list
* light.sensehat: update docstrings to the linter's specs
* light.sensehat: add a bit more docstring
* Remove global limit on white light temperature
Here are the supported temperatures of some popular bulbs:
Philips Hue: 2000K-6500K (the current 500-154 mired range)
LIFX Color 1000: 2500K-9000K
IKEA TRÅDFRI: 2200K, 2700K, 4000K
Obviously, Home Assistant cannot enforce a global limit and work properly
with all of these bulbs. So just remove the limit and leave it up to each
platform to work it out.
This commit updates the existing users and adds a clamp to Hue (where the
limit appears to have originated). It does not attempt to update other
platforms that might need extra handling of the larger range that is now
possible.
* Add min_mireds/max_mireds state attributes to lights
* Support min_mireds/max_mireds with LIFX lights
This makes more sense because the input and output brightness is the same.
We currently convert through RGB which does contain a brightness so we supply
an arbitrary value as input and discard the output.
* Allow InfluxDB to blacklist domains
This adds an option to InfluxDB to blacklist whole domains. This is
useful for domains like automation or script, where no statistic data
is needed.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Add unittest for InfluxDB domain blacklist
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Use common include/exclude config for InfluxDB.
Its now the same syntax as it is for recorder.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Add unittests for InfluxDB include whitelist.
There where no tests for that feature before.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Default to white when setting LIFX temperature
Changing the temperature of a saturated color is possible but not very
interesting. So assume that a change of the temperature implies setting
the color to white, unless a different color is actually specified.
This makes the frontend temperature picker much more useful because it can
now be used to get away from a colored light.
* Default to a neutral white temperature when setting LIFX colors
This means that setting a particular color will always give the same output,
no matter what the temperature was previously at.
* Find brightness after colors
Now the color_temp logic will not see a changed color when setting
temperature+brightness and thus we will actually get a white light in
this situation.
The XY conversion can then not use brightness as input. This is not
an issue because XY only affects hue and saturation, not brightness. So
we can just use an arbitrary value as brightness input.
* Add a simple comment to a complex conditional
* Add support for Zigbee Home Automation
* Fewer magic numbers
* Make optional device config work
* Remove non-zha device_tracker stuff
* Always return boolean from is_on
* Only pass through JSON serializable discovery_info
* Update to bellows 0.2.4
* Fewer magic numbers in binary sensor
* Populate const structures from a function
* Update bellows to 0.2.6
* Fewer magic numbers in light
* Take all possible clusters when overriding
* Update bellows to 0.2.7
* rss_feed_template initial checking
* lint
* Remove use of deprecated cgi-escape()
* Switching back to chardet==2.3 (resolve failing tests with 3.0)
* Code and test improvments
* Option 'requires_api_password', default is True
* Added initial support for tradfri group control
* Tried to keep original variable structure
* pylint and pep8 fixes
* Fixed lint error about docstring
* Removed unneeded stuff, renamed _light. Needs to be released pytradfri version.
* Better naming of variables inside add_devices call.
* Fixes utf-8 encoding no longer required by libopenzwave0.3.3
Removes byte encoding for values operation mode, fan mode and swing
mode.
* Fix zwave climate tests for utf-8 change
* Add script to import state events to InfluxDB
This adds a script to import recorded events from a recorder database
to a InfluxDB instance. This can be useful for initial importing after
setup of a InfluxDB.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Fix step argument handling in Influx import
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Correct typo in InfluxDB Importer
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Update influxdb_import.py
* Refactor matrix notify service.
This refactor aims to close#6118 by making the save / restore of the
authentication tokens much more resilient to failure.
It also refactors the module so that all the functionality is part of the class
and that a login failure causes the service to fail on setup rather than at
message send time.
* Make the linter overlords happy
* Improve logger levels and messages
* small style change
* Fix indentation issue
* Always register the view if a webhook exists.
* Return True if platform is set up succesfully, False otherwise.
* Remove the webhook when home assistant stops. Webhooks and long
polling are mutually excklusive. If a webhook is left after home
assistant is stopped, a polling telegram bot is unable to be set up,
on next start of home assistant.
* avion light: Bump python-avion dependency version
The dependencies in python-avion weren't sufficiently strict. This is now
fixed, but means we need to depend on a new version.
* decora light: Bump python-decora dependency
There's a new version of python-decora with a reliability fix, so depend on
that.
* wierd pylint complaint
* Workaround for Graber csz1 shades
* logging
* Try direct
* Try direct
* Use workaround
* Review changes and tests
* test
* reset test
* Use Bright and Dim also as open and close is
* Added the pushbullet sensor component
* Updated requirements_all.txt and .coveragerc with the new sensor
* Updated acording to houndci-bots comments
* Some more changes
* Final change by the hound (?)
* Fixes from balloobs review and from houndci-bot
This changes the sensors information to only contain one attribute
as information, and the rest as device_state_attributes.
* Added leading space to comments
* Added docstrings, removed API_KEY from log, changed imports
* The hound is at it again
* Fix remaining issues
* Fix pylint issue
* updated pylgtv module to fix problems with timeouts
* - update pylgtv to 0.1.6
- handle new TimeoutError exception from pylgtv
* used full name for exception handling of concurrent.futures._base.TimeoutError
* the exception handling should now follow the rules
* float typecasting should not be necessary
* use asyncio for TimeoutError it’s an alias for concurrent.futures.TimeoutError
The arwn platform was refactored to be asyncio friendly, however in
doing so one thing was missed which was explicitly telling hass when
something interesting has happened. This led to the very interesting
to debug issue that the state cards were all out of date, even though
the graphs were not.
* Update ios.py
as discussed. the part:
if battery_state == ios.ATTR_BATTERY_STATE_FULL:
returning_icon_level = DEFAULT_ICON_LEVEL
kinda screws up the charging icon.
i might just miss a logical solution for that though.
let me know what you think. it might not be beautiful but i think its an overall improve over the current "double battery" solution
* Update ios.py
chound fix and full_battery_charge fix
* Update ios.py
removed new line
* Update ios.py
* Update ios.py
* Update ios.py
* Update ios.py
* Update ios.py
* Update ios.py
* merged request from robbie
* Update ios.py
* Update ios.py
* Update ios.py
* Refactor into find_hsbk
This will be useful for new methods that also have to find passed in colors.
* Add AwaitAioLIFX
This encapsulates the callback and Event that aiolifx needs and thus avoids an
explosion of those when new calls are added.
The refresh_state is now generally useful, so move it into its own method.
* Initial effects support for LIFX
These effects are useful as notifications. They mimic the breathe and pulse
effects from the LIFX HTTP API:
https://api.developer.lifx.com/docs/breathe-effecthttps://api.developer.lifx.com/docs/pulse-effect
However, this implementation runs locally with the LIFX LAN protocol.
* Saturate LIFX no color value
Now the color is "full saturation, no brightness". This avoids a lot of
temporary white when fading from the "no color" value and into a real color.
* Organize LIFX effects in classes
This is to move the setup/restore away from the actual effect, making it quite
simple to add additional effects.
* Stop running LIFX effects on conflicting service calls
Turning the light on/off or starting a new effect will now stop the running
effect.
* Present default LIFX effects as light.turn_on effects
This makes the effects (with default parameters) easily accessible from
the UI.
* Add LIFX colorloop effect
This cycles the HSV colors, so that is added as an internal way to set a
color.
* Move lifx to its own package and split effects into a separate file
* Always show LIFX light name in logs
The name is actually the easiest way to identify a bulb so just using it
as a fallback was a bit odd.
* Compact effect getter
* Always use full brightness for random flash color
This is a stopgap. When a bit more infrastructure is in place, the intention
is to turn the current hue some degrees. This will guarantee a flash color
that is both unlike the current color and unlike white.
* Clear effects concurrently
We have to wait for the bulbs, so let us wait for all of them at once.
* Add lifx_effect_stop
The colorloop effect is most impressive if run on many lights. Testing
this has revealed the need for an easy way to stop effects on all lights
and return to the initial state of each bulb. This new call does just that.
Calling turn_on/turn_off could also stop the effect but that would not
restore the initial state.
* Always calculate the initial effect color
To fade nicely from power off, the breathe effect needs to keep an
unchanging hue. So give up on using a static start color and just find the
correct hue from the target color.
The colorloop effect can start from anything but we use a random color
just to keep things a little interesting during power on.
* Fix lint
* Update .coveragerc
2017-04-20 22:46:12 -07:00
1133 changed files with 56882 additions and 17076 deletions
@@ -4,11 +4,11 @@ Everybody is invited and welcome to contribute to Home Assistant. There is a lot
The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/devel/faster_reviews.md) by Kubernetes (but skip step 0)
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0)
- Fork the Home Assistant [git repository](https://github.com/home-assistant/home-assistant).
- Write the code for your device, notification service, sensor, or IoT thing.
- Ensure tests work.
- Create a Pull Request against the [**dev**](https://github.com/home-assistant/home-assistant/tree/dev) branch of Home Assistant.
Still interested? Then you should take a peak at the [developer documentation](https://home-assistant.io/developers/) to get more details.
Still interested? Then you should take a peek at the [developer documentation](https://home-assistant.io/developers/) to get more details.
Home Assistant |Build Status| |Coverage Status| |Join the chat at https://gitter.im/home-assistant/home-assistant| |Join the dev chat at https://gitter.im/home-assistant/home-assistant/devs|
Home Assistant is a home automation platform running on Python 3. It is able to track and control all devices at home and offer a platform for automating control.
@@ -31,6 +31,8 @@ of a component, check the `Home Assistant help section <https://home-assistant.i
@@ -69,7 +67,7 @@ class WemoBinarySensor(BinarySensorDevice):
@property
defis_on(self):
"""True if sensor is on."""
"""Return true if sensor is on."""
returnself._state
defupdate(self):
@@ -80,5 +78,5 @@ class WemoBinarySensor(BinarySensorDevice):
try:
self._state=self.wemo.get_state(force_update)
exceptAttributeErroraserr:
_LOGGER.warning('Could not update status for %s (%s)',
self.name,err)
_LOGGER.warning(
"Could not update status for %s (%s)",self.name,err)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.