* Update ecobee to use only range setpoints
* Update nest to only use range setpoints
* Update demo to use only range for ecobee test device
* Update test
* Fetch unit from ecobee
* generic_thermostat did not have state
* generic_thermostat test update
* Platform schema had duplicate retain keys, which made it always set
to default.
* Optimistic state changed was inverted, due to using integer position
instead of boolean.
* Add more tests for mqtt cover.
* Add new component for licence plates processing (OpenAlpr)
* address balloobbot comments
* add to coveragerc
* move config from device to base
* fix lint
* move local api test to voluptous
* split render engine
* change cloud_api pip string & lint
* update requirements_all.txt
* fix lint
* update cloud_api url
* convert base64 byte string to string
* Update cloudapi / add configence / add state
* fix lint
* change state to high confidence plate
* fix cloudapi
* fix local api detection
* add wraper for local api
* fix lint
* fix wrong import
* fix HAAlpr name
* update ha-alpr without async
* support only eventbased requests with interval 0
* fix minor things
* fix lint
* fix lint2
* Added play media to squeezebox
The squeezebox component can now add a URI to an existing playlist or just over write it to force a stream to play.
* Cleaned up flake8 issues with formatting.
Spacing... The end of the world! Fixed. Once day the tools will fix this on the fly, one day...
[x] ./homeassistant/components/media_player/squeezebox.py:307:1: W293 blank line contains whitespace
[x] ./homeassistant/components/media_player/squeezebox.py:366:1: W391 blank line at end of file
[x] ./homeassistant/components/media_player/squeezebox.py:366:1: W293 blank line contains whitespace
Updated SUPPORT_SQUEEZEBOX to add SUPPORT_PLAY_MEDIA
[x] ./homeassistant/components/media_player/squeezebox.py:13:1: F401 'homeassistant.components.media_player.SUPPORT_PLAY_MEDIA' imported but unused
* Updates from review
Updated the comments to indicate they are developer / API comments and not for end users.
Marked the private functions with a leading underscore (_)
* Fixed Lint issues.
202ERROR: InvocationError: '/home/travis/build/home-assistant/home-assistant/.tox/lint/bin/flake8'
203lint runtests: commands[1] | pylint homeassistant
204************* Module homeassistant.components.media_player.squeezebox
205C:322, 0: Trailing whitespace (trailing-whitespace)
* Added Support for mysensnors Climate/HVAC device
* Added Support for mysensnors-hvac device:fix pylint error
* Added Support for mysensnors-hvac device:fix pylint error2
* Fixed Issues in code as per review comments
* Fixed Linter Errors
* Fixed Linter Errors:2
* Fixed Linter Errors:2
* Fixed Linter Errors
* Fixed Linter Errors
* Fixed Linter Errors
* Added Support for MySensors HVAC| Fixed Review Comments| Removed Additional Comments
* Added Support for MySensors HVAC| Fixed Review Comments Itr2
* Changes to correctly support devices with both high and low bound temperatures
* Changed to optimize the code
* Test updating automatic
* Scan interval
* Schedule scan every time delta
* Pass around has
* Recursive issue
* Method invocation
* Oops
* Set up poll
* Default argument value
* Unused import
* Semicolon
* Fix tests
* Linting
* Unneeded throttle as it's handled by time event
* Use track time change event listener
* Disable lint rule
* Attribute removed - removing test
* Debug instead of info
* Unused import
* Add open/closed state mapping for open_cover and close_cover
* Add 'open', 'closed' for open/close_cover_tilt
* Revert "Add 'open', 'closed' for open/close_cover_tilt"
This reverts commit e45582d439.
* BUG Message data cannot be changed thus use voluptuous to ensure format
* Pilight daemon expects JSON serializable data
Thus dict is needed and not a mapping proxy.
* Add explanation why dict as message data is needed
* Use more obvious voluptuous validation scheme
* Pylint: Trailing whitespace
* Added the ability to trigger the alarm.
* Bump version of pyenvisalink to 1.3
* Fixed an issue where the panic_type was not passed to the sub-components properly.
* Bump pyenvisalink version, and make default panic mode = police.
* Pass in event loop to pyenvisalink.
* Made the components play nicely with asyncio.
* Bump pyenvisalink to 1.6
* Bump up pyenvisalink, and better handle synchronous setup.
* Added the possibility to manually specify a Yamaha Receiver
* Added the possibility to manually specify a Yamaha AVR
* Using string formatting
* Hostname checks for None now
* Do not use add_devices for each if-branch separately
* Fixed linting
* Update __init__.py
addedattribute "WHITE_VALUE" to improve support for RGBW devices
* Update services.yaml
* Update __init__.py
* Update __init__.py
* Update __init__.py
* Update __init__.py
* Update __init__.py
* Update __init__.py
shortened line
* Update __init__.py
* Update __init__.py
* Add mysensors RGBW and light tests
* Activate support for mysensors RGBW devices with support for
white_value attribute.
* Add white_value support in light demo platform.
* Add tests for white_value and more for light component.
* Add tests for light demo platform.
* Fix import order in check_config.
* o added ability to exclude entities or domains from logbook
o exclude hidden entities
* fixed remaned configuration key
* - filter the events before they get passed to humanify, to separate concerns
- instead of looking at customize, look for the hidden attribute on the state change events
- access to configuration defaults to an empty list - no need to check
* - filter only events of type EVENT_STATE_CHANGED
- improve config handling
* added unit tests to cover all filter cases and logbook message creation
* Added email component
* added email sensor component
* added doc string to test class
* fixed lint error
* fixed lint error
* rename of email component
* added another block as test fails on CI
* added retry to multi email test
* added delay to retry
* added to .coveragerc
* removed sleep from tests and fixed up stale comments
* Move worker pool monitoring to be time based instead of add_job based.
* Stub out worker pool monitor during tests
* Add test for monitor worker pool.
* Improve naming
* Test stop_monitor coroutine
* Add async_create_timer test
* Finish rename create_timer
* Added support to Yahoo Finance to track the stock market within Home Assistant
* Fixed pylint issues
* Fixed formatting issues
* Fixed pep257 issues
* - Fixed URL link
- Added attributes for Yahoo Finance
* Removed price sales ATTR
* Fixed lint and flake8 issues. Added attribution to Yahoo! per https://developer.yahoo.com/attribution/
* Fix test shutdown to ensure loop/threads are clean.
We now ensure the loop is closed, it has completed, and the
executer has completed. This ensure all threads are freed
up with any test calling hass.stop().
* Fix lint issue with run_loop
* Update Ecobee state after making changes to climate
Without this, climate and sensor state will take up to 3 minutes
(the MIN_TIME_BETWEEN_UPDATES on its update throttle) to update in
the interface, which makes it more difficult to do automation around the
state.
* Use a boolean instance variable that update can check, rather than always calling update
* Add PyBluez to Dockerfile
Adds PyBluez to Dockerfile so people using Docker can run Bluetooth
devices
* Remove pip install of pybluez
Pybluez will be installed automatically when the Bluetooth device
tracker is enabled
* Add Initial version for emoncms feeds sensor
* flake8 test fixes
* pylint test fixes
* - fix bug with include_feed_id_names not assigning the name to the element in the same postion as found in include_feed_id
- a few structure changes to have less nesting (pylint fix)
- minor other changes
* update .coveragerc
* voluptuous fixes:
- exclude_feed_id and include_feed_id Exclusive group so that only one (or none) can be specified at once
- id must be positive int
- exclude_feed_id and include_feed_id must be positive int
* Fix comment so it refers to the documentation
* use string formatting
* Remove outer try
* clean up sensors.append calls
(break them out for loop)
* multiple changes like:
- rename config value "include_feed_id" to "include_only_feed_id"
- rename config value "include_feed_id_names" to "sensor_names"
- renamed config value sensor_names is now a dictionary an can also be used when renamed config value "include_only_feed_id" is not specified
- Set default value for scan_interval using the config validation
- blank lines between default, 3rd party and own imports
- removed homeassistant.util import, it was not needed anymore
* fix extended voluptuous schema
scan_interval should not be extended to PLATFORM_SCHEMA as it was already in the schema by config_validation helper so i should not add / change it. It was also causing problems reading the value from the config.
* Use Home Assistant polling
* remove statement that can never happen
* Guard clause
* Reduce instance variables
* Implemented onkyo reconnect
Connection object is cleared after a failed command. It will be
automatically recreated upon the next command running. This should allow
for failed connections to be restored.
* Remove reduntant error catching
* Run all update commands with command wrapper.
* Handle errors better
* Removed unused global
I have no idea how that got there.
* First version of the MiFlora sensor (not yet finished)
* First workign version
* Added some documentation
Get name from sensor, if not defined
* Ignore IOError
* Added force_update option
* Updated comments
* Renamed fertility to conductivity (what it really is)
* MiFlora library update
* Updated helper files
* Formatting
* Fixed pylint errors
* Removed default from monitored conditions
* Removed KeyError handling as a KeyError should never be raised
* Added a return when no data is received
* emoved unnecessary return statement
* Changed default name
* Changes quotes and string operation ( @Teagan42 )
* - number of samples for median calculation is now configurable
- set state to None if no data could be polled from sensor
* Bugfix in library
more logging
* Fixed miflora version number
* Added Sensor Support for KNX Devices
Added Sensor for KNX Group Addresses
- Temperature
- Wind Speed
- Illuminance(LUX)
Mostly to fetch from a KNX Wetterstation
* Some pylint,flake8 fixes
* Pydoc Fixes
* Fix Coverage Ordering
* Refactor KNX Sensor
Refactor to Idea from @usul27 and added Minimum Maximum
* Removed Measurement Untis from const.py
Removed needed Measurement Units from const.py and add it to
sensor\knx.py
* Change .coveragerc
* Add as Requested from @Teagan42 the new Type Names
Additional add CONF_MINIMUM and CONF_MAXIMUM
* Added Changes as Requested from @Teagan42
* Fixed the Merge Conflict, Hopefully i done it rigth :-)
* Fixed Styling
* Test updating automatic
* Scan interval
* Schedule scan every time delta
* Pass around has
* Recursive issue
* Method invocation
* Oops
* Set up poll
* Default argument value
* Unused import
* Semicolon
* Fix tests
* Linting
* Unneeded throttle as it's handled by time event
* Use track time change event listener
* Disable lint rule
* Attribute removed - removing test
* Debug instead of info
* Unused import
* Test updating automatic
* Scan interval
* Schedule scan every time delta
* Pass around has
* Recursive issue
* Method invocation
* Oops
* Set up poll
* Default argument value
* Unused import
* Semicolon
* Fix tests
* Linting
* Unneeded throttle as it's handled by time event
* Use track time change event listener
* Disable lint rule
* Attribute removed - removing test
* Debug instead of info
* Unused import
* Add event loop to the core
* Add block_till_done to HA core object
* Fix some tests
* Linting core
* Fix statemachine tests
* Core test fixes
* fix block_till_done to wait for loop and queue to empty
* fix test_core for passing, and correct start/stop/block_till_done
* Fix remote tests
* Fix tests: block_till_done
* Fix linting
* Fix more tests
* Fix final linting
* Fix remote test
* remove unnecessary import
* reduce sleep to avoid slowing down the tests excessively
* fix remaining tests to wait for non-threadsafe operations
* Add async_ doc strings for event loop / coroutine info
* Fix command line test to block for the right timeout
* Fix py3.4.2 loop var access
* Fix SERVICE_CALL_LIMIT being in effect for other tests
* Fix lint errors
* Fix lint error with proper placement
* Fix slave start to not start a timer
* Add asyncio compatible listeners.
* Increase min Python version to 3.4.2
* Move async backports to util
* Add backported async tests
* Fix linting
* Simplify Python version check
* Fix lint
* Remove unneeded try/except and queue listener appproriately.
* Fix tuple vs. list unorderable error on version compare.
* Fix version tests
* Add open/closed state mapping for open_cover and close_cover
* Add 'open', 'closed' for open/close_cover_tilt
* Revert "Add 'open', 'closed' for open/close_cover_tilt"
This reverts commit e45582d439.
* BUG Message data cannot be changed thus use voluptuous to ensure format
* Pilight daemon expects JSON serializable data
Thus dict is needed and not a mapping proxy.
* Add explanation why dict as message data is needed
* Use more obvious voluptuous validation scheme
* Pylint: Trailing whitespace
* Add open/closed state mapping for open_cover and close_cover
* Add 'open', 'closed' for open/close_cover_tilt
* Revert "Add 'open', 'closed' for open/close_cover_tilt"
This reverts commit e45582d439.
* BUG Message data cannot be changed thus use voluptuous to ensure format
* Pilight daemon expects JSON serializable data
Thus dict is needed and not a mapping proxy.
* Add explanation why dict as message data is needed
* Use more obvious voluptuous validation scheme
* Pylint: Trailing whitespace
* Extend schema
* Update ordering
* Add line breaks
* Align callback name with other platforms
* ALign callbackname with other platforms
* Update callback name to match other platforms
* Update callback name
* Update callback name
* Backend support for importing waypoints from owntracks as HA zones
* Added test for Owntracks waypoints import
* Backend support for importing waypoints from owntracks as HA zones
* Added test for Owntracks waypoints import
* Removed redundant assignment to CONF_WAYPOINT_IMPORT_USER
* Fixed zone test break and code style issues
* Fixed style issues
* Fixed variable scope issues for entities
* Fixed E302
* Do not install pip packages in tests
* EventBus: return function to unlisten
* Convert automation to entities with services
* Refactored zone creation based on code review feedback, enhanced configuration
* Added unit test to enhance waypoint_whitelist coverage
* Fix JSON encoder issue in recorder
* Fix tests docstring
* * Improved zone naming in waypoint import
* Added more test coverage for owntracks and zone
* Back to 0.28.0.dev0
* Code review feedback from @pavoni
* Added bitfield of features for flux_led since we are supporting effects
* Host should be optional for apcupsd component (#3072)
* Use voluptuous for file (#3049)
* Zwave climate Bugfix: if some setpoints have different units, we should fetch the o… (#3078)
* Bugfix: if some setpoints have different units, we should fetch the one that are active.
* Move order of population for first time detection
* Default to config if None unit_of_measurement
* unit fix (#3083)
* humidity slider (#3088)
* If device was off target temp was null. Default to Heating setpoint (#3091)
* Fix linting
* Upgrade pyuserinput to 0.1.11 (#3068)
* Upgrade pyowm to 2.4.0 (#3067)
* improve isfile validation check (#3101)
* Refactor notification titles to allow for them to be None, this also includes a change in Telegram to only include the title if it's present, and to use a Markdown parse mode for messages (#3100)
* Fix broken test
* rfxtrx sensor clean up
* Bitcoin sensor use warning instead of error (#3103)
* Use voluptuous for HDMI CEC & CONF_DEVICES constants (#3107)
* Update voluptuous for nest (#3109)
* Update configuration check
* Extend platform
* Fix for BLE device tracker (#3019)
* Bug fix tracked devices
* Added scan_duration configuration parameter
* fix homematic climate implementation (#3114)
* Allow 'None' MAC to be loaded from known_devices (#3102)
* Use voluptuous for xmpp (#3127)
* Use voluptuous for twitter (#3126)
* Use voluptuous for Fritzbox and DDWRT (#3122)
* Use Voluptuous for BT Home Hub (#3121)
* Use voluptuous for syslog (#3120)
* Use voluptuous for Aruba (#3119)
* Use constants, update configuration check, and ordering (Pilight) (#3118)
* Use contants, update configuration check, and ordering
* Fix pylint issue
* Migrate to voluptuous (#3113)
* Fix typo (#3108)
* Migrate to voluptuous (#3106)
* Update voluptuous (#3104)
* Climate and cover bugfix (#3097)
* Avoid None comparison for zwave cover.
* Just rely on unit from config for unit_of_measurement
* Explicit return None
* Mqtt (#11)
* Explicit return None
* Missing service and wrong service name defined
* Mqtt state was inverted, and never triggering
* Migrate to voluptuous (#3096)
* Migrate to voluptuous (#3084)
* Fixed Homematic cover (#3116)
* Migrate to voluptuous (#3069)
🐬
* Migrate to voluptuous (#3066)
🐬
* snapcast update (#3012)
* snapcast update
* snapcast update
* validate config
* use conf constants
* orvibo updates (#3006)
🐬
* Update frontend
* move units to temperature for climate zwave. wrong state was sent to mqtt cove
* Use voluptuous for instapush (#3132)
* Use voluptuous for Octoprint (#3111)
* Migrate to voluptuous
* Fix pylint issues
* Add missing docstrings (fix PEP257 issues) (#3098)
* Add missing docstrings (fix PEP257 issues)
* Finish sentence
* Updated braviatv's braviarc version to 0.3.4 (#2997)
* Updated braviarc version to 0.3.4
* Updated braviarc version to requirements_all.txt
* Use voluptuous for Acer projector switch (#3077)
🐬
* Use voluptuous for twilio (#3134)
* Use voluptuous for webostv (#3135)
* Use voluptuous for Command line platforms (#2968)
* Migrate to voluptuous
* Fix pylint issues
* Remove FIXME
* Split setup test
* Test with bootstrap
* Remove lon and lat
* Fix pylint issues
* Add coinmarketcap sensor (#3064)
* Migrate to voluptuous (#3142)
🐬
* Back out insteon hub and fan changes (#3062)
* Move details to docs (#3146)
* Update frontend
* Use constants (#3148)
* Update ordering (#3149)
* Migrate to voluptuous (#3092)
* Display the error instead of the traceback (notify.slack) (#3079)
* Display the error instead of the traceback
* Remove name for check
* Automatic ODB device tracker & device tracker attributes (#3035)
* Migrate to voluptuous (#3173)
* Add voluptuous for tomato and SNMP (#3172)
* Improve voluptuous and login errors for Asus device tracker (#3170)
* Add exclude option to nmap device tracker (#2983)
* Add exclude option to nmap device tracker
Adds an optional exclude paramater to nmap device tracker.
Devices specified in the exclude list will never be scanned
by nmap. This can help to reduce log spam.
ex:
```
device_tracker:
- platform: nmap_tracker
hosts: 10.0.0.1/24
home_interval: 1
interval_seconds: 12
consider_home: 120
track_new_devices: yes
exclude:
- 10.0.0.2
- 10.0.0.1
```
* Handle optional exclude
* Style fixed
* Added Xbox Live component (#3013)
* Added Xbox Live component
* Added Xbox Live sensor to coveralls
* Added init success checks
* Added entity id
* Adding link_names to post.message call (#3167)
If you do not turn link_names on, Slack will not highlight @channel and @username messages.
* Allow https (fixes#3150) (#3155)
* Use constants (#3156)
* Bugfix: ctach Runtime errors (#3153)
"RuntimeError: Disable scan failed" has been seen in a live installation
* Migrate to voluptuous (#3166)
🐬
* Migrate to voluptuous (#3164)
🐬
* Migrate to voluptuous (#3163)
🐬
* Migrate to voluptuous (#3162)
🐬 and 🍪 for fixing quotes!
* Exclude www_static from pydocstyle linting (#3175)
🐬
* Migrate to voluptuous (#3174)
* Migrate to voluptuous (#3171)
* Use voluptuous for mFi switch (#3168)
* Migrate to voluptuous
* Take change configuration into account
* Migrate to voluptuous (#3144)
🐬
* Add the occupancy sensor_class (#3176)
Such a complicated PR
* Update frontend
* Use voluptuous for Unifi, Ubus (#3125)
* Using alert with Hue maintains prior state (#3147)
* When using flash with hue, dont change the on/off state of the light so that it will naturally return to its previous state once flash is complete
* ATTR_FLASH not ATTR_EFFECT
* MQTT fan platform (#3095)
* Add fan.mqtt, allow brightness to be passed and mapped to a fan speed for compatibility with emulated_hue
* Pylint/Flake8 fixes
* Remove brightness
* Add more features, like custom oscillation/speed payloads and setting the speed list
* Flake8 fixes
* flake8/pylint fixes
* Use constants
* block fan.mqtt from coverage
* Fix oscillating comment
* Add Sphinx API doc generation (#3029)
* add's sphinx project to docs/ dir
* include core/helpers autodocs for API reference
* Allow reloading automation without restarting HA (#3002)
* Migrate to voluptuous (#3182)
🐬
* Migrate to voluptuous (#3179)
🐬
* Added scale and offset to the Temper component (#2853)
🐬
* Use voluptuous for BT and Owntracks device trackers (#3187)
🐬
* Correct binary_sensor.ecobee docs URL
* Use voluptuous for Hikvisioncam switch (#3184)
* Migrate to voluptuous
* Use vol.Optional
* Use voluptuous for Edimax (#3178)
🐬
* Use voluptuous for Bravia TV (#3165)
🐬
* Added support to 'effect: random' to Osram Lightify lights (#3192)
* Added support to 'effect: random' to Osram Lightify lights
* removed extra line not required
* Use voluptuous for message_bird, sendgrid (#3136)
* Try out the RTD theme
* Doc updates
* Update voluptuous for existing notify platforms (#3133)
* Update voluptuous for exists notify platforms
* fix constants
* Simple trend sensor. (#3073)
* First cut of trend sensor.
* Tidy.
* Migrate to voluptuous (#3193)
* Migrate to voluptuous (#3194)
🐬
* Migrate to voluptuous (#3197)
* Migrate to voluptuous (#3198)
🐬
* Use extend of PLATFORM_SCHEMA (#3199)
* Migrate to voluptuous (#3202)
🐬
* Updated to use the occupancy sensor_class (#3204)
🐬
* Migrate to voluptuous (#3206)
* Migrate to voluptuous (#3207)
* Migrate to voluptuous (#3208)
🐬
* Migrate to voluptuous (#3209)
🐬
* Migrate to voluptuous (#3214)
* Use voluptuous for SqueezeBox (#3212)
* Migrate to voluptuous
* Remove name
* Migrate to voluptuous and upgrade uber_rides to 0.2.5 (#3181)
* Migrate to voluptuous (#3200)
🐬
* Use Voluptuous for Luci and Netgear device trackers (#3123)
* Use Voluptuous for Luci and NEtgear device trackers
* str_schema shortcut
* Undo str_schema
* change update handling with variable for breack CCU2 (#3215)
* Update ordering (#3216)
* Docs update
* Flake8/pylint
* Add new docs requirements
* Update email validation (#3228)
🐬
* Fix email validation (fixes#3138) (#3227)
* Upgrade slacker to 0.9.25 (#3224)
* Upgrade psutil to 4.3.1 (#3223)
* Upgrade gps3 to 0.33.3 (#3222)
* Upgrade Werkzeug to 0.11.11 (#3220)
* Upgrade sendgrid to 3.4.0 (#3226)
* Bluetooth: keep looking for new devices (#3201)
* keep looking for new devices
* Update bluetooth_tracker.py
* change default value for tracking new devices
* remove commented code
* dlink switch added device state attributes and support for legacy firmware (#3211)
* Use voluptuous for free mobile (#3236)
* Use voluptuous for nma (#3241)
* Improve 1-Wire device family detection and error checking. Use volupt… (#3233)
* Improve 1-Wire device family detection and error checking. Use voluptuous
* Fix detection of gpio connected devices
* Replace rollershutter and garage door with cover, add fan (#3242)
* Use voluptuous for Alarm.com (#3229)
* Use voluptuous for gntp (#3237)
* Use voluptuous for pushbullet, pushetta and pushover (#3240)
* Migrate to voluptuous (#3230)
🐬
* Fix mFi sensors in uninitialized state (#3246)
If mFi sensors are identified but not fully assigned they can
have no tag value, and mficlient throws a ValueError to signal this.
This patch handles that case by considering such devices to always
be STATE_OFF.
* Use voluptuous for PulseAudio Loopback (#3160)
* Migrate to voluptuous
* Fix conf var
* Use voluptuous for Verisure (#3169)
* Migrate to voluptuous
* Update type and add missing config variable
* thread safe modbus (#3188)
* Upgraded fitbit to version 0.2.3 which fixed oauthlib.oauth2.rfc6749.errors.TokenExpiredError: (token_expired) (#3244)
* update ffmpeg version to 0.10 add get image to camera (#3235)
* Migrate to voluptuous (#3234)
* fix bugfix with unique_id (#3217)
* Zwave climate fix and wink cover. (#3205)
* Fixes setpoint get was done outside loop
* zxt_120
* Wink not migrated to cover
* Clarifying debug
* too long line
* Only add 1 device entity
* Owntracks voluptuous fix (#3191)
* Zwave set temperature fix (#3221)
* If device was off set target temp would not work.
* Changed to use a workaround just for Horstmann HRT4-ZW Zwave Thermostat
* Wrong Horseman id
* style changes
* Change PR to suggestion on gitter (#3243)
* Reload groups (#3203)
* Allow reloading groups without restart
* Test to make sure automation listeners are removed.
* Remove unused imports for group tests
* Simplify group config validation
* Add prepare_reload function to entity component
* Migrate group to use entity_component.prepare_reload
* Migrate automation to use entity_component.prepare_reload
* Clean up group.get_entity_ids
* Use cv.boolean for group config validation
* fix remove listener (#3196)
* Add linux battery sensor (#3238)
* protect service data for changes in calls (#3249)
* protect service data for changes in calls
* change handling
* move MappingProxyType to service call
* Fix issue #3250 (#3253)
* Minor Ecobee changes (#3131)
* Update configuration check, ordering, and constants
* Make API key optional
* issue #3250
* Add voluptuous to ecobee (#3257)
* Use constants and update ordering (#3261)
* Add support for complex template structures to data_template (#3255)
* Improve yaml fault tolerance and handle check_config border cases (#3159)
* Use voluptuous for nx584 alarm (#3231)
* Migrate to voluptuous
* Fix pylint issue
* fastdotcom from pypi (#3269)
* Use constants and update ordering (#3268)
🐬
* Use constants and update ordering (#3267)
🐬
* Add additional template for custom date formats (#3262)
I can live with a few visual line breaks 🐬
* Use constants and update ordering (#3266)
* Updated braviatv's braviarc version to 0.3.5 (#3271)
* Use voluptuous for Device Sun Light Trigger (#3105)
* Migrate to voluptuous
* Use default
* Point to master till archive is back (#3285)
* Pi-Hole statistics sensor (#3158)
* Add Pi-Hole sensor
* Update docstrings and remove print()
* Use None for payload
* Added stuff for support range setting (#3189)
* cleanup Homematic code (#3291)
* cleanup old code
* cleanup round 2
* remove unwanted platforms
* Update frontend
* Hotfix for #3100 (#3302)
* Fix TP-Link Archer C7 long passwords (#3225)
* Fix tplink C7 long passwords
Fixes an issue where passwords longer than 15 chars could not log in to Archer C7 routers.
* Truncate in correct place
* Add comment about TP-Link C7 pass truncation
* Fix lint error
* Truncate comment at 79 chars not 80
* modbus write registers service (#3252)
* Fix bloomsky platform discovery (#3303)
* Remove dev tag
* Fix tplink C7 long passwords
Fixes an issue where passwords longer than 15 chars could not log in to Archer C7 routers.
* Truncate in correct place
* Add comment about TP-Link C7 pass truncation
* Fix lint error
* Truncate comment at 79 chars not 80
* Allow reloading groups without restart
* Test to make sure automation listeners are removed.
* Remove unused imports for group tests
* Simplify group config validation
* Add prepare_reload function to entity component
* Migrate group to use entity_component.prepare_reload
* Migrate automation to use entity_component.prepare_reload
* Clean up group.get_entity_ids
* Use cv.boolean for group config validation
* If device was off set target temp would not work.
* Changed to use a workaround just for Horstmann HRT4-ZW Zwave Thermostat
* Wrong Horseman id
* style changes
If mFi sensors are identified but not fully assigned they can
have no tag value, and mficlient throws a ValueError to signal this.
This patch handles that case by considering such devices to always
be STATE_OFF.
* Add fan.mqtt, allow brightness to be passed and mapped to a fan speed for compatibility with emulated_hue
* Pylint/Flake8 fixes
* Remove brightness
* Add more features, like custom oscillation/speed payloads and setting the speed list
* Flake8 fixes
* flake8/pylint fixes
* Use constants
* block fan.mqtt from coverage
* Fix oscillating comment
* When using flash with hue, dont change the on/off state of the light so that it will naturally return to its previous state once flash is complete
* ATTR_FLASH not ATTR_EFFECT
* Add exclude option to nmap device tracker
Adds an optional exclude paramater to nmap device tracker.
Devices specified in the exclude list will never be scanned
by nmap. This can help to reduce log spam.
ex:
```
device_tracker:
- platform: nmap_tracker
hosts: 10.0.0.1/24
home_interval: 1
interval_seconds: 12
consider_home: 120
track_new_devices: yes
exclude:
- 10.0.0.2
- 10.0.0.1
```
* Handle optional exclude
* Style fixed
* Host should be optional for apcupsd component (#3072)
* Zwave climate Bugfix: if some setpoints have different units, we should fetch the o… (#3078)
* Bugfix: if some setpoints have different units, we should fetch the one that are active.
* Move order of population for first time detection
* Default to config if None unit_of_measurement
* unit fix (#3083)
* humidity slider (#3088)
* If device was off target temp was null. Default to Heating setpoint (#3091)
* Fix for BLE device tracker (#3019)
* Bug fix tracked devices
* Added scan_duration configuration parameter
* fix homematic climate implementation (#3114)
* Allow 'None' MAC to be loaded from known_devices (#3102)
* Climate and cover bugfix (#3097)
* Avoid None comparison for zwave cover.
* Just rely on unit from config for unit_of_measurement
* Explicit return None
* Mqtt (#11)
* Explicit return None
* Missing service and wrong service name defined
* Mqtt state was inverted, and never triggering
* Fixed Homematic cover (#3116)
* Add missing docstrings (fix PEP257 issues) (#3098)
* Add missing docstrings (fix PEP257 issues)
* Finish sentence
* Merge pull request #3130 from turbokongen/zwave_fixes
Bugfix. climate and covermqt
* Back out insteon hub and fan changes (#3062)
* Bump version
* Special frontend build for 0.27.2
* Avoid None comparison for zwave cover.
* Just rely on unit from config for unit_of_measurement
* Explicit return None
* Mqtt (#11)
* Explicit return None
* Missing service and wrong service name defined
* Mqtt state was inverted, and never triggering
* Bugfix: if some setpoints have different units, we should fetch the one that are active.
* Move order of population for first time detection
* Default to config if None unit_of_measurement
* Allow user to configure server id to perform speed test against
* Don't overwrite list
* Type-o
* Convert to string
* Append lists
* str(None) => 'None' did not realize that.
* Map Modes to setpoint indexes
* Fixes devices with no thermostat mode
* another try to fix devices without mode
* another try to fix devices without mode 2
* another try to fix devices without mode 3
* fix setting setpoint for devices with no mode
* fix setting setpoint for devices with no mode
* Update attr to property and default state method
* State prop is defined in parent class
* Demo platform fan
* PyDoc
* Copy-pasta artifact
* PyDoc
* Linting
* Raise error if turn_off and turn_on not implemented
* Update demo platform
* Initial unit test commit
* Readability
* Unneeded typing
* Should inherit from fan entity
* Turn off polling
* Initial oscillating flag
* Pass HASS into demo
* Typing
* Invoke set_speed instead of setting directly
* Service update
* Update demo tests
* Forgot to block after service call.
* linting
* Test to make sure not implemented is thrown
* Is On Method test
* Update const to match string
* Update services yaml
* Toggle method
* Toggle service
* Typing
* TYPE O
* Attribute check
* Type-o
* Type-o
* Put typing back
* ToggleEntity
* Linting
* Linting
* Oops
* Stale prints
* Demo support
* Initial code for alexa_local_control.
* Added support for creating a dummy username.
* Move SSDP responses to local variables.
* Added config validation via Voluptuous.
* Modify and remove unnecessary returned emulated bridge values.
* Remove script and scene domains from default exposed domains.
* Replaced Flask with HomeAssistantWSGI.
* Fix lint errors.
* Correcting grammar and spelling in docs and comments.
* Rename alexa_local_control to emulated_hue.
* Rename emulated_hue attributes.
* Fix a bug where something marked not exposed is exposed by default.
* Make sure the UPNP responder thread cleanly stops when HASS stops.
Also fix some config loading and lint errors.
* Fixed unexposed entities still having individual state exposed.
* Started writing tests for emulated_hue.
* Fix being able to set state of non-exposed entity.
* Another test for emulated_hue.
* More tests for emulated_hue.
Also slightly simplified emulated_hue's PUT handler.
* Fix bad test, sorry :/
* Third time's the charm.
* Fix lint and value validation tests.
* Rename emulated_hue bridge name.
* Remove license and documentation from header.
* Combine two if statements.
* Style changes.
* Fixed various issues and added some constants
* Use mqtt component to enable a MySensors MQTT gateway.
* Setup the MQTT gateway if mysensors config has mqtt as a value for
the key device in the list of gateways.
* Simplify two lines in the mqtt component.
* adding pull mode and relay time
* fixing failing tests
* removed unused vars, removed trailing whitespace
* removed white space
* split line in 2
* removed whitespace and fixed indent
* undid line break
* Update rpi_gpio.py
new line so its not too long
* back to no new line
* Moved long method to a new line
* Moved comment
* moved comment to above method
* adding required blank line
* fixed variables and made them optional
misunderstood the logic at first.
* removed line for lint and removed vars that were not required
* added second blank line for class
* added new configs to platform_schema - still have same error on load
* changing string to int
* added code to covers rpi as well
* Implement support for NEST structures.
* Conform to balloobbot style preferences.
* Log to debug level rather than info level.
* Use config validation to coerce list format if supplied as string.
* Use list comprehension for more succinct code.
* Conform to project linting standards.
* First draft for cover component
* Efficiency from @martinhjelmare
* migrate demo
* migrate demo test
* migrate command_line rollershutter
* migrate command_line test
* migrate rpi_gpio garage_door
* make some abstract methods optional
* migrate homematic
* migrate scsgate
* migrate rfxtrx and test
* migrate zwave
* migrate wink
* migrate mqtt rollershutter and test
* requirements
* coverage
* Update mqtt with garage door
* Naming and cleanup
* update test_demo.py
* update demo and core
* Add deprecated warning to rollershutter and garage_door
* Naming again
* Update
* String constants
* Make sure set_position works properly in demo too
* Make sure position is not set if not available.
* Naming, and is_closed
* Update zwave.py
* requirements
* Update test_rfxtrx.py
* fix mqtt
* requirements
* fix wink version
* Fixed demo test
* naming
* Add support for notifying with Slack messages.
When creating notifications, this allows you to pass in `attachments`
with the `data`. It's an array of attachments as defined in
https://api.slack.com/docs/message-attachments
When passing in attachments, message is still required, but it's okay to
be a blank string.
* Split over multiple lines
* Make sure attachments gets assigned, even if there isn't attachment data
* Added support for serial HM-Z19 CO2 sensor
* Minor pylint bug fixes
* Added new files to .coveragerc
* Removed newline
* Changes in requirements after change of pmsensor library
* Change the implementation of default name
* Check if serial interface is working before adding the sensor
* Maximum sensor value is 5000ppm
The repository already merged the pull request adding python3 support.
root is no longer required to use the gpio.
Signed-off-by: Roi Dayan <roi.dayan@gmail.com>
* Clean-up, ordering, constants, and extend of schema
* Put REQUIREMENTS back and re-add line breaks
* Clean-up, ordering, constants, and extend of schema
* Extend platform
* Move secret cache out of loader so it can be referenced by other folders
* Unit test to verify secrets from another folder work & see if it overrides parent secret
* Clear secret cache after load
Current documentation suggests to use personal API tokens. This isn't
ideal because for a few reasons:
* messages will come as your own user, so it's hard to tell it's coming
from hass
* it's harder to manage if multiple people are using Slack and home
* assistant, since you'd have to coordinate rolling of it
It is possible to use Slack bot users already. Just make a new one from https://your-team.slack.com/apps/build/custom-integration, and use the token for that. You can even add an icon from the web frontend for home assistant.
However, the message will appear as a bot without a name or icon. This pull requests fixes this by passing the as_user parameter, which uses the bot user's name and icon.
One caveat is you need to invite the bot user into the room you want to
post to. This probably was an issue before though.
🎩 to @jnewland who pointed me to this in his branch
* Added support for name
Added name support and changed default name to "Forecast.io" since "Weather" had conflict with Yahoo weather and Open weather map
* Update forecast.py
* Added Bluetooth Low Energy device tracker
* Added new file(s)
* Fixed pylint errors
* Remove traling zeros from device names
* recreated deleted file
* Added requirements
* Renamed to bluetooth_le tracker
Removed gattlib from tests
Minor code cleanup
* - fixed .coveragerc bug
- changed discovery algorithm, new devices will only be added if seen 5 times to make sure
HA doesn't blow the database with devices just passing by
Currently there are only hw inputs in the sources list.
Other interesting inputs can be live tv (dvbt) and vod apps.
* add customize option for webos
* add short names for livetv, youtube, mako apps
* add current app as a source
* use large icon (largeIcon is the same as icon if doesn't exists)
* filter out hw inputs that are not connected
Signed-off-by: Roi Dayan <roi.dayan@gmail.com>
* Add action and callback support to html5 (#2855).
Remove registrations from the callback view since we always get the latest anyway.
We dont put an audience in the claims so we will never hit this error.
Bring tests back up to where they were before callbacks.
Only import jwt where necessary
Fix bracket spacing errors
Fix JWT decode check for loop
Remove stale comment.
Add tests for the callback system.
Shorten line
Disable pylint broad-except and change e to jwt_decode_error.
Verify expiration
Remove duplicate jwt.exceptions.DecodeError
Catch no keys matched and return False
* Switch to using registrations for callbackview instead of json_path
* Only check for URL and such if the data object actually exists
* raise instead of return
* cleanup decode_jwt
* Clean up JWT errors
* Correctly set status_code to 401
* Improve JWT by adding target to claims and attempting to check the given target for a decode match first, as well as pass the target through in the event payload.
* Add tag support and fix formatting issues
* Pass through any keys that dont apply to the payload into the notification.data dictionary
* Remove stale print
* Pass back the data dictionary if it exists
* Actually put the default url even if a notify payload dictionary doesnt exist
* pylint, flake8
* Add subscription validation
* Add validation for the callback event payload and use constants where possible
* Use HTTP_UNAUTHORIZED instead of 401
* Change callback dictionary to dict instead of cv.match_all
* Fix up tests and make subscription required
* Whoops, that test was supposed to fail
* Use the result of CALLBACK_EVENT_PAYLOAD_SCHEMA as event_payload
* Add a test for html5 callback decode_jwt where the device has been renamed since notification has been sent.
* Remove the loop through logic, assume that target is always in JWT
* Always return something instead of possibly None.
* Update frontend
* Add a group notify platform which allows sending a single notification to multiple platforms.
* Correctly sort group.py
* Clean up the payload logic
* Make name and entity id required in the schema
* Deep update the dictionary to fix a bug where data wasnt merging.
* Add notify.group tests.
* Improve docstrings.
* Change entities to services and entity_id to service
* Make service a slug without a default value
* Update tests for entities->services, entity_id->service
* vol.Any(cv.slug) -> cv.slug
* First pass on providing individual services for all possible targets that a notification platform supports.
* Add a quite hacky first version of notification groups
* Add a docstring for get_targets
* Register group service under notifygroup/ and safely check for notifygroups in config
* Remove notifygroups, because it belongs in its own PR
* Make @balloob requested changes
* get_targets()->targets
* Add tests for notify targets exposed as individual services
* If we dont have a platform name set in configuration, lets use the name of the platform instead of notify
* Fix test docstring.
* Dont use a dictionary for just one value
* No need to double slugify
* targets is now just a list of strings instead of a dict
* Support passing an email address linked to Gravatar as the picture in known_devices.
* Add a dedicated field for Gravatar
* Bring tests back up to where they were before Gravatar.
* Add tests for Gravatar.
* Retry sending the push for 1 day instead of failing instantly if the target is unavailable
* Add timestamp to push payload
* Correctly use the title and body fields for their intended purposes
* Add callback support
* Revert changes to frontend files.
* Add default URL which will open Home Assistant. Also put all the data into the data object of the payload so it is accessible in the browser. Without doing this, things like URL wouldnt be accessible.
* Flake8 and pylint fixes
* event->type
* Dont send the default url if actions exist
* flake8/pylint fixes again
* Update html5 tests
* Remove callbacks from this branch, will re-stage on a different branch
* Remove remnant of callbacks
* Add url to data dictionary if it exists instead of copying the entire data dictionary in
* flake8 fix
* Add FritzBox call monitor sensor
* Correct docstrings and suppress too few public methods warning
* Remove blank lines after docstrings
* Add blank lines after class docstrings
* Remove trailing white space
* Make daemon; add reconnect on disconnect
* HP ILO component
* HP ILO component
* Add Onboard Administrator sensor
* Add Onboard Administrator sensor
* Add period to first line
Fix D400 error on line 1
* Fix log message for deprecated temp key
* Use string formatting and pass constant variables as arguments in log
message to show correct name of config keys.
* Fix import order
* Initial work to add Chrome Push Notification support
* Remove push.js from home-assistant since it is now in Polymer
* Chrome->HTML5, general cleanup/fixes
* Make html5 generic, move manifest.json into frontend so that we can dynamically add the gcm_sender_id
* Pylint, flake8, pydocstyle frontend init
* HTML5 push fixes
* Update polymer
* Remove crypto req
* Add notify default platform.
* Fix HTML5 push
* Registration fixes
* Linting fix
* pep257 fix
* Add tests
* pep257 fix
* Update frontend
* Implemented range checking for temperature and humidity. Out-of-range values will be ignored
* Removed unused import
* Use celsius_to_fahrenheit conversion method
* Add support for GPSD
* Add gpsd.py
* Check if socket is open
* Fix pylint issue
* Rename file to be a sensor
* Update for being a sensor
* Rework for being a sensor
* Add support for new mqtt_json light platform.
* Fix W503 errors.
* Bring in feedback from @balloob.
* Add test coverage for invalid color and brightness data.
* Add coverage for transition in turn_off.
* New component to interface with a pilight-daemon for RF send/receive
* Fix bug that changed the received data, add connected flag, clean up
* New pilight switch component
* New optional whitelist filter to filter uninteressting devices
* Add pilight
* PEP8: too long lines, white spaces
* To keep up the good coverage ...
* PEP 257
* pylint enhancements
* pylint enhancements
* PEP 257
* Better HA config validation and cleanup following code review for #2742
* Fix requirenments to require fixed pilight version
* Change config validation to use voluptuous
* Pilight switch exclude not needed due to wildcard pilight exclude
* Enhance configuration parsing using voluptuous
* Added optional embedded image attachments to notify.smtp.
Also restructured a bit to minimize code duplication and add some tests.
* Fixed formatting errors.
* SMTP cleanups thanks to code review.
* Add a Foursquare component which accepts push notifications from Foursquare and provides a user checkin service
* @balloob requested fixes
* Sort .coveragerc list of components by name
* Revert "Sort .coveragerc list of components by name"
This reverts commit 997ae22576.
* Only sort Foursquare since I get conflicts otherwise
* Add Foursquare checkin service to services.yaml
* Update to latest Plex API, add music support.
* Fix PyLint errors.
* Update Plex sensor module to latest PlexAPI.
* Oops - update Python sensor import.
* According to PlexAPI docs, this is the new API for Plex Pass members.
* More pylint STFUs.
* Move pylint suppression.
* Use plexapi NA type directly.
* Pylint objects to short variable names.
The 0.3.1 version of the library includes fixes for time syncing the
thermostat under the covers when needed. All changes are done on the
library side, we just need to bump the required level in home
assistant.
* Fix: Circular dependencies of internal files
* Change: dt.date for Date and dt.datetime for DateTime
* Use NewType if available
* FIX: Wrong version test
* Remove: Date and DateTime types due to error
* Change to HomeAssistantType
* General Improvement of Typing
* Improve typing config_validation
* Improve typing script
* General Typing Improvements
* Improve NewType check
* Improve typing db_migrator
* Improve util/__init__ typing
* Improve helpers/location typing
* Regroup imports and remove pylint: disable=ungrouped-imports
* General typing improvements
Add unit symbol constants
Initial unit system object
Import more constants
Pydoc for unit system file
Import constants for configuration validation
Unit system validation method
Typing for constants
Inches are valid lengths too
Typings
Change base class to dict - needed for remote api call serialization
Validation
Use dictionary keys
Defined unit systems
Update location util to use metric instead of us fahrenheit
Update constant imports
Import defined unit systems
Update configuration to use unit system
Update schema to use unit system
Update constants
Add imports to core for unit system and distance
Type for config
Default unit system
Convert distance from HASS instance
Update temperature conversion to use unit system
Update temperature conversion
Set unit system based on configuration
Set info unit system
Return unit system dictionary with config dictionary
Auto discover unit system
Update location test for use metric
Update forecast unit system
Update mold indicator unit system
Update thermostat unit system
Update thermostat demo test
Unit tests around unit system
Update test common hass configuration
Update configuration unit tests
There should always be a unit system!
Update core unit tests
Constants typing
Linting issues
Remove unused import
Update fitbit sensor to use application unit system
Update google travel time to use application unit system
Update configuration example
Update dht sensor
Update DHT temperature conversion to use the utility function
Update swagger config
Update my sensors metric flag
Update hvac component temperature conversion
HVAC conversion for temperature
Pull unit from sensor type map
Pull unit from sensor type map
Update the temper sensor unit
Update yWeather sensor unit
Update hvac demo unit test
Set unit test config unit system to metric
Use hass unit system length for default in proximity
Use the name of the system instead of temperature
Use constants from const
Unused import
Forecasted temperature
Fix calculation in case furthest distance is greater than 1000000 units
Remove unneeded constants
Set default length to km or miles
Use constants
Linting doesn't like importing just for typing
Fix reference
Test is expecting meters - set config to meters
Use constant
Use constant
PyDoc for unit test
Should be not in
Rename to units
Change unit system to be an object - not a dictionary
Return tuple in conversion
Move convert to temperature util
Temperature conversion is now in unit system
Update imports
Rename to units
Units is now an object
Use temperature util conversion
Unit system is now an object
Validate and convert unit system config
Return the scalar value in template distance
Test is expecting meters
Update unit tests around unit system
Distance util returns tuple
Fix location info test
Set units
Update unit tests
Convert distance
DOH
Pull out the scalar from the vector
Linting
I really hate python linting
Linting again
BLARG
Unit test documentation
Unit test around is metric flag
Break ternary statement into if/else blocks
Don't use dictionary - use members
is metric flag
Rename constants
Use is metric flag
Move constants to CONST file
Move to const file
Raise error if unit is not expected
Typing
No need to return unit since only performing conversion if it can work
Use constants
Line wrapping
Raise error if invalid value
Remove subscripts from conversion as they are no longer returned as tuples
No longer tuples
No longer tuples
Check for numeric type
Fix string format to use correct variable
Typing
Assert errors raised
Remove subscript
Only convert temperature if we know the unit
If no unit of measurement set - default to HASS config
Convert only if we know the unit
Remove subscription
Fix not in clause
Linting fixes
Wants a boolean
Clearer if-block
Check if the key is in the config first
Missed a couple expecting tuples
Backwards compatibility
No like-y ternary!
Error handling around state setting
Pretty unit system configuration validation
More tuple crap
Use is metric flag
Error handling around min/max temp
Explode if no unit
Pull unit from config
Celsius has a decimal
Unused import
Check if it's a temperature before we try to convert it to a temperature
Linting says too many statements - combine lat/long in a fairly reasonable manner
Backwards compatibility unit test
Better doc
This commit adds a new config option to the heat_control thermostat
component, min_cycle_duration. Some heaters and/or ACs don't like
being constantly cycled on and off. Prior to this patch the
heat_control component can end up cycling the switch quite
frequently. (depending on how quickly the temperature changes) The
new option added is used for setting a minimum duration that must
have elapsed in either the on or off state before the thermostat will
send the service call to cycle the switch. This should enable users to
hand tune how frequently heat_control can switch the device on or off
to best suit the device being used.
This commit adds a new option to the heat_control component, ac_mode.
When set to true, this treats the toggle device as a cooler instead
of a heater. The concept being if you have a window or in-wall ac
unit that doesn't have a built-in thermostat having the home assistant
implemented thermostat would be as useful as for space heaters.
Instead of always assuming we want to change the heat, instead use the
setback attribute which sets heat / cool setback based on current HVAC
mode. This means that the proliphix thermostat will do sensible things
during cooling season.
* Added mired and kelvin mode to flux
* changed as requested
* Renamed varible
* attempt to add test for new method in flux.py
* removed line to fix lint error
* Allow multiple proximities
* Distance conversion
* Add unit of measurement and conversion to proximity
* Shorten attribute name
* Fix get unit of measurement
* Fix the km <-> m conversion
* Add type check and errors
* first path unit test around distance utility
* Fix numeric type check
* Fix conversion type-os
* Actually set the exception thrown flag
* Test for exact conversion
* More descriptive variable names
* Update method invocation to match change in method name
* Missed a couple variables
* Line continuation
* Fix linting too many return issue
* Break out proximity setup for list of proximity and for single proximity device
* Pass hass to setup function
* Check if setup succeeded for each proximity component
* Change variable name
* Break out branches in convert to avoid too many branches linting error
* Remove disable lint line
* Variables for default properties
* Combine logic
* Test loading multiple proximities for 100% code coverage on proximity component
* Unit test to reach 100%
Fail to configure proximities missing devices
* Fail first before processing
* Combine return statements
* lstrip = bad Teagan
* Utilize string formating instead of concatenation
* Fix variable reference
* Typeo
* Clean up conversion to reduce complexity
* Update unit tests to match code changes on distance util
* Test non numeric value
* Private methods, value type has already been checked.
I don't know if this is the right place for this, but I'm tired of having to install mysqlclient or psycopg2 after every docker update if I want to use mysql of postgres.
* Add group state for locks
Added ", (STATE_LOCKED, STATE_UNLOCKED)" to _GROUP_TYPES
Don't have a working HA right now, so can't test..
* Modified from homeassistant.const import
* Removed white space
* Line length change
* Removed white space.. again!
* Initial media_player component for the MPC-HC web API.
* Update .coveragerc to exclude the MPC-HC media player component.
* We don't need a session for every HTTP fetch.
* Use host in configuration YAML to match Kodi component.
* Fix PyLint errors.
* Fix PEP8 errors and use more idiomatic Python to get dict() values.
* Add MPC-HC remote command capabilities for basic control.
* Hyperion lets you turn it on and off
* Update hyperion to use recent API functions
The plugin now gets the active color from the server.
Add a configuration option "default_color" to customize the turn_on color.
* Use local timezone for log and history dates
* home-assistant-js fix
* Submodule updates not included so travis can build
* Separate Date and DateTime http validators
* Include submodule reference
* Update frontend
* slugify() for dev_id (fixes#2162) [Keep space replacement to not impact known_devices.yaml]
* pyicloud upgrade 0.9.1
* config validation
* Only poll icloud every 4 minutes...
* Immediately pull device state on HASS start
* Added new test with icloud char e' acute [chr(233)]
* Suppress pyicloud logging
* Make sure values are updated regardles of manual or frontend update,
* Devices with set_switch command was not happy with fast updating.
* Binary triggersensors command was not happy with refreshed updating.
Fixes#2611
Adds a timeout kwarg to call_service and API.__call__ with default set
to 5 (as per previous behavior). Will not change existing behavior but
will allow remote Python API calls to specify a longer (or shorter)
timeout if they know that a script takes longer than 5 seconds to
return.
* Major rewrite of the KNX multi address device. This class wasn't used before, but the new class will be the base for the LNX thermostat module
* newer KNXIP version needed as the previous version had a serious bug
* Update knxip to later version
* Added thermostat module
* First implementation of a KNX thermostat module
* Minor cleanup
* Removed unsed code
* Update recorder.
models.py:
- Use scoped_session in models.py to fix shutdown error
__init__.py:
- Session _commit & retry method
- Single session var for purge_data
- Ensure single _INSTANCE
- repeat purge every 2 days
- show correct time in log_error
* _commit
* Restore models to old functionality, swap purge, remove _INSTANCE cleanup from tests, typing ignore Base class
* pylint
* Remove recorder from model unit test
* Fix deprecated(moved) import
* Add util/dt typing
* Green on mypy util/dt
* Fix some errors
* First part of yping util/yaml
* Add more typing to util/yaml
* Add __main__ type hints
* Fix most errors of __main__
* Add ignore for script.run()
* Add type annotations for from_config_dict and from_config_file
* Fix errors
* Fix requirement error
* Add mypy type check to tests
* Enable travis typing check
* Messed up the tox deps
* Laxer type checker
* Add power attribute to switch.
* Move device_state_attributes into base class.
* Fix imports following refactor.
* Bump pyvera version - should add contributed support for older (UI5) version dimmers and locks.
* Refactor device lookup to be based on vera classes, push category back into library.
* Add generic power attribute, fix inherited class order bug.
* Tidy.
* add media_player/clear_playlist and line-in/tv support to sonos
* add support source radio
* fix bug
* print TV/Line-In as media_title
* implement universal player
* add to demo platform
* Update demo.py
Better handling for demo object
* add unit tests
* fix unit test
* Allow owntracks entity for google travel times
* Added ability to use sensor state as location
* Added zone checks for google travel timesg
* Updated to use global constents and the location helper
* Fixed type in method name and removed redundant validation
* Changed domain condition to be a bit more elegant
* Updated to allow friendly name in any instance including the config
* Fixed bad python syntax and used helper methods
* add hvac mode support to radiotherm
off/cool/heat/auto modes are supported
* Moved STATE_AUTO to thermostat component, fix lint
Moved STATE_AUTO to thermostat platform. Fixed lint error.
* initial support for Join notifier
add more functions for Join
* rename to joaoapps_join
add message default in schema
move api_key check
* move special join services to their own component
update coveragerc and requirements_all
add icon and smallicon
* Clamp brightness between 0 and 255
Change to ensure that values over 255 supplied by the config will be
clamed to a max value of 255.
* Revert "Clamp brightness between 0 and 255"
This reverts commit c87238e8b5.
* Clamp brightness between 0 and 255
Change to ensure that values over 255 supplied by the config will be
clamed to a max value of 255.
* Imap unread email sensor
Checks the inbox of a imap account for unread emails. Tested against
gmail.
Example config:
```
sensor:
- platform: imap
name: gmail test
user: USER
password: PASSWORD
server: imap.gmail.com
port: 993
```
* added to .coveragerc
* Code cleanup and typo fix.
* Added port range validation
* Fix lint errors
* Implementation of a KNX platform driver and a KNX switch
* Starting working on a KNX thermostat implementation
* Removed KNX thermostat implementation from this branch again
* Make gateway parameter optional (can be auto-detected in many cases)
* Removed check for double initialisation
* KNX messages now will be handled internally and not send to the Home Assistant message bus
* Call update_ha_state only if should_poll is false
* Removed unused HASS variable
* knxip library version changed
* pylint optimization
* New Switch Platform: TPLink Switch (HS100 / HS110)
### Information
The TPLink switch platform allows you to control the state of your TPLink Wi-Fi Smart Plugs.
Supported devices (tested):
HS100 (UK)
It should also work with the HS110.
To use your D-Link smart plugs in your installation, add the following to your configuration.yaml file:
"""
# Example configuration.yaml entry
switch:
platform: tplink
host: IP_ADRRESS
name: TPLink Switch
"""
### Configuration variables:
host (Required): The IP address of your TPlink plug, eg. http://192.168.1.105
name (Optional): The name to use when displaying this switch.
* Update tplink.py
Bug fixes
* Separate to a standalone library
* Removed unnecessary imports
* Code cleanup and update reference library link
* TPLink switch support (#2453)
* updated requirements
* Update unifi.py
Add support for a site that is not the default within the Unifi Controller.
i.e. A controller with multiple sites:
- Home
- Friends
- Parents (default)
Supplying the identifier for 'Home' now means that the devices tracked will be associated with 'Home'.
* Update test_unifi.py
Fix test modules as well.
* Switch to SQLAlchemy for the Recorder component. Gives the ability to use MySQL or other.
* fixes for failed lint
* add conversion script
* code review fixes and refactor to use to_native() model methods and execute() helper
* move script to homeassistant.scripts module
* style fixes my tox lint/flake8 missed
* move exclusion up
Default behavior for warm/cold white channels is to assume the white
channel is mixed with the rgb. This is a sane default and should support
the Fibaro RGBW LED controller.
* Replace switch with lock
* Update docstrings
* Add link to docs
* Add link to docs and update docstrings
* Update docstring
* Update docstrings and fix typos
* Add link to docs
* Add link to docs
* Add link to docs and update docstrings
* Fix link to docs and update docstrings
* Remove blank line
* Add link to docs
* Support more types of 1wire sensors and bus masters
- Added support for DS18S20, DS1822, DS1825 and DS28EA00 temperature sensors
- Added support for bus masters which use fuse to mount device tree.
Mount can be specified by 'mount_dir' configuration parameter.
* Correct the lint problem
* Stick version numbers
* Move elevation to core config
* Migrate forecast test to requests-mock
* Migrate YR tests to requests-mock
* Add requests_mock to requirements_test.txt
* Move conf code from bootstrap to config
* More config fixes
* Fix some more issues
* Add test for set config and failing auto detect
* Depreciate ssl2/3
Following the best practices as defind here:
https://mozilla.github.io/server-side-tls/ssl-config-generator/
* Updated comment with better decription
Links to the rational rather than the config generator; explains link.
* add comment mentioning intermediate
* Fix move_up and move_down
I managed to switch up the zwave move_up and move_down commands.
This PR fixes it.
Thank you @nunofgs for bringing this to my attention :)
* Fix for aeotec 6 multisensor
This commit fixes an issue with the use of None in default values
for the config get() calls in __init__() of AsusWrtDeviceScanner.
These values are cast as strings and when a NoneType is cast it
returns the string "None" this broke the check for the existence
of these fields. This commit fixes the issue by changing the default
value to be an empty string '' which will conform with the behavior
expected by the ssh login code.
Closes#2343
* Add support for wind, battery, radio signals
* Fix indentation error
* second indentation fix
* Fix for pylint too many statements error
* Moving "pylint: disable=too-many-statements"
* Added Sony Bravia support to HA
* Improvements to make it work on my poor raspberry 1
* Just a typo
* A few fixes in order to pass pylint
* - Remove noqa: was due to the 80 characters max per line restriction
- Move communication logic to a separate library at https://github.com/aparraga/braviarc.git
- Added dependency and adapt the code according to that
* A few improvements
* Just a typo in a comment
* Rebase from HM/dev
* Update requirements by executing the script/gen_requirements_all.py
* More isolation level for braviarc lib
* Remove unnecessary StringIO usage
* Revert submodule polymer commit
* Small refactorization and clean up of unused functions
* Executed script/gen_requirements_all.py
* Added a missing condition to ensure that a map is not null
* Fix missing parameter detected by pylint
* A few improvements, also added an empty line to avoid the lint error
* A typo
* Basic implementation of Zwave Rollershutters
* Better filtering, by @wokar
* Fix typo
* Remove polling from component, and loop fix
* linter fix
* Filter to channel devices to correct component
* Remove overwriting of parent node name
* Created a new platform for envisalink-based alarm panels (Honeywell/DSC)
* Added a sensor component and cleanup
* Completed initial development.
* Fixing pylint issues.
* Fix more pylint issues
* Fixed more validation issues.
* Final pylint issues
* Final tweaks prior to PR.
* Fixed final pylint issue
* Resolved a few minor issues, and used volumptous for validation.
* Fixing final lint issues
* Fixes to validation schema and refactoring.
* Added template rendering to `shell_command` component
* Security upgrades to template rendering in shell_command.
* Added new unit tests for shell_command templates.
Better failure when template is invalid in shell_command
add option to name in config
fix const import
use plexapi
add myplex support for remote access
use first server if server not specified
use list comprehension
use dictionary comprehension
* Pandora cleanups and enhancements
Added media_content_type
reduced debug messages
made more robust station list
Eliminated auto-pause detection issue
* Added proper de-init of LIRC
* Now won't re-spawn Pandora client if turn_on command is sent twice
* Update frontend
Conflicts:
homeassistant/components/frontend/version.py
homeassistant/components/frontend/www_static/core.js.gz
homeassistant/components/frontend/www_static/frontend.html
homeassistant/components/frontend/www_static/frontend.html.gz
homeassistant/components/frontend/www_static/home-assistant-polymer
homeassistant/components/frontend/www_static/service_worker.js
homeassistant/components/frontend/www_static/service_worker.js.gz
* Add a default OPTIONS handler for wsgi (#2301)
When a browser makes a CORS request, it often makes a 'preflight'
options request in order to make sure the resource is valid, and that
it has the right CORS access. This adds a default OPTIONS handler for
all views. If a view needs to customize the OPTIONS handler for some
reason, it's free to, but this way CORS will work.
* Version bump to 0.21.2
When a browser makes a CORS request, it often makes a 'preflight'
options request in order to make sure the resource is valid, and that
it has the right CORS access. This adds a default OPTIONS handler for
all views. If a view needs to customize the OPTIONS handler for some
reason, it's free to, but this way CORS will work.
* Refactor Forecast.io
* Some more refactoring and code review workoff
* Dict switch refactor
* CamelCase for data lookup
* Fixing unit_of_measure update
* Better default return for unit_of_measurement
* Test fix
* Added Pandora media player utilizing the Pianobar client
* Added Pandora to .coveragerc ignore
* Fixes some docstring formats in Pandora
* More minor formatting tweaks for Pandora
* Eliminated non-portable assumption from Pandora component
* Updated Pandora to properly update currently-playing song.
* Docstring fixes in Pandora
* Added check to ensure Pianobar client is available in path for Pandora.
* Made Pandora client verification a function instead of method.
* Better handling of dependency verification in Pandora.
* Add mysensors IR switch device and service
* Add MySensorsIRSwitch as child class to MySensorsSwitch.
* Add platform specific service mysensors_send_ir_code. Only call
device method in service function if device is IR device.
* Add service and required attribute to state helper to support scenes.
* Move V_IR_SEND type from sensor.mysensors to switch.mysensors
platform.
* Populate switch.services.yaml with service descriptions.
* Fix check of entity_id in service function
Since multiple entity_ids can be passed as service data, and the
entity_id service attribute is forced to a list by the service
validation schema, the check in the service function should iterate
over any entity ids.
Previously experienced issues on routes where services operate in both
directions. The query picked up not just paths where service goes
from Origin -> Destination, but trips going Destination -> Origin,
and shown bogus results.
Ensure that this doesn't happen by requiring the origin station's
stop_sequence value to be lower than the destination station.
* WSGI based request handler
with a bit of polishing
Signed-off-by: eagleamon <joseph.piron@gmail.com>
* removed stale comment and fixed version, but failed tests do not seem to be related
* removing the wrapper hack
* added in requirements file
* Found the caved in lint error..
* Add a swagger.yaml file
@balloob
I created a swagger configuration file that will help people create clients (apps / frontends) for Home Assistant more easily. Based upon this code it is even possible to generate client code for several programming languages.
I created it by hand now, so when the API changes it will need to be updated. That's why it would be better to generate this specification automatically. This is possible for API frameworks but I don't know whether it is possible for the handwritten endpoints in Home Assistant. Maybe you could assist here?
This documentation could be used to replace a part of https://home-assistant.io/developers/rest_api/.
* Added restrict parameter
* Moved swagger file to docs folder
* Introducing the Netatmo component
As Netatmo is providing several type of device (sensor, camera), a new Netatmo
component needs to be created in order to centralize the Netatmo login data.
Currently this change only impacts the Netatmo Weather station
* Add new Netatmo library
This new API will provide access to the Welcome Camera
* Basic support for Netatmo Welcome camera
This change introduces support for Netatmo Welcome camera. Currently, it will
add all detected camera to Home Assistant, camera filtering (similar to the one
used for weather station modules) will be added later
* Remove useless REQUIREMENTS
* Fixes for Netatmo Welcome support
* Allow to filter Welcome cameras by name and/or home
* Update requirements for Netatmo components
* Fix multi-camera support for Welcome
* Fix pep8 error/warning
* This commit also adds improved logging for bad credentials
* Add Throttle decorator for Welcome update function
As the update function updates the data for all cameras, we should prevent this
function to be called several time during an interval
Previously experienced issues on routes where services operate in both
directions. The query picked up not just paths where service goes
from Origin -> Destination, but trips going Destination -> Origin,
and shown bogus results.
Ensure that this doesn't happen by requiring the origin station's
stop_sequence value to be lower than the destination station.
* Removed webcolors dependency in favor of dictionary lookup.
* Fixed code style errors.
* Moved color dictionary to module per suggestion.
* Removed try/except per suggestion.
A new configuration option `turn_off_action` is added to kodi. It may be
one of: none, quit, hibernate, suspend, reboot, or poweroff. The
appropriate command is sent to kodi when the turn_off action is
requested. Default value is none.
Kodi will only report turn_off supported if it is configured to
something other than none.
Unfortunately, Ubiquiti changed their (supposedly versioned) API in
3.2.0 which causes us to have to refer to cameras by id instead of
UUID. The firmware for 3.2.x also changed the on-camera login procedures
and snapshot functionality significantly.
This bumps the requirement for uvcclient to 0.9.0, which supports the
newer API and makes the tweaks necessary to interact properly.
This is useful to vaoid having several graph for the same type of data
According to wikipedia:
Units derived from the bar include the megabar (symbol: Mbar),
kilobar (symbol: kbar), decibar (symbol: dbar), centibar (symbol: cbar),
and millibar (symbol: mbar or mb).
* Add CORS support to WSGI
* Remove X-HA-Access as a CORS header, because as @JshWright so elegantly put it: "CORS controls access to response headers, not request headers"
* flux platform as a switch
* use track_time_change. broken :(
* use track_utc_time_change instead of track_time_change
* add some basic tests
* use brightness from RGB_to_xy
* config_schema validation
* back to platform schema. what was i doing?
* more broken tests :(
* 644
* fix some time bugs
* add working tests. config validation still not right
* bug fixes and more test cases.
This commit adds back the config validation for the http component. It
was removed during the WSGI shuffle. This is just a direct copy of what
@robbiet480 added in ab294d12f7 (with some testing to verify it still
works).
* List entity_ids in config and only react to them
This allows us to define a list of entity_ids in the config to make the
template sensor, binary sensor and switch only react to state changes of
these entities instead of listening to all state changes.
* Forgot to import the track_state_change function
* Changed test for added entity_ids to config
* Use default MATCH_ALL and remove event_listener
Right now we ignore already parsed entries and store the information
at runtime, but it will not survive a restart. This patch adds storage
functionality storing pickled file into default config folder when
feed has `published_parsed` support.
* Allow time condition windows to cross midnight.
* Address comments.
Fold _in_time_window back into the time() condition test.
Use specific time values to test the time window.
* Insteon support for brightness
* Farcy fix for unused constants.
* Remove unused constant and fix whitespace.
* Prevent toggle switches from jumping between states.
* 255 not 256
* Added Osram Lightify light component
* Added color temperature and fade transition support to Osram Lightify
* Added Osram Lightify light component
* Added color temperature and fade transition support to Osram Lightify
* Updated docstring
* Added osramlightify to ignore list on coveragerc and updated docstrings
* Fixed linting issues
* Initial support for EnOcean
Tested to work with:
- Eltako FUD61 dimmer
- Eltako FT55 battery-less switch
- Permundo PSC234 (switch and power monitor)
* Rerun gen_requirements_all.py
* Fix TLS with eventlet
This fixes a simple error on my part when implementing the WSGI stuff.
eventlet.wrap_ssl() returns a wrapped socket, it does not modify the
object passed to it. We need to grab the returned value and use that.
* Fix style issue
While looking for leaked resources (threads) after shutdown and before restart
we in some cases get an assertion in the python threading module where we find
a thread marked as running at the python level but it has no associated thread
at the C level.
While looking for leaked resources (threads) after shutdown and before restart
we in some cases get an assertion in the python threading module where we find
a thread marked as running at the python level but it has no associated thread
at the C level.
This is a fair chunk of the way towards adding a WSGI compatible stack
for Home Assistant. The majot missing piece is auth/sessions. I was
undecided on implementing the current auth mechanism, or adding a new
mechanism (likely based on Werkzeug's signed cookies).
Plenty of TODOs...
* Add support for Logentries
Supports sending has events to Logentries web hook endpoint
see logentries.com for more
Inspired by the Splunk component
* bugfix
* fix summary
* fix test
* fix logentries url and tests
* update tests
* mock token
* Bug fixes
* typo
* typo
* fix string splitting
* remove redundant backslash
* use sane defaults for openzwave config
Use sane default if libopenzwave is installed. In most cases this will
mean that the zwave config path will not need to e manually specified.
* Resuming work on onkyo component
* Source control added to UI for onkyo receiver
Source will now display in the UI. Source mappings can be defined in the
config, and a rudimentary mapping is defined by default as a fallback.
When the onkyo source is updated, it will resolve to a defined name if
possible. This may break existing automations.
* fix lint errors
* Updated Onkyo receiver
Now takes an optional ip/name in additional to atempting to discover
deivces.
Source select will now take a sources mapping in the config. It will
provide default values if no source mapping is provided.
example:
- platform: onkyo
host: 10.0.0.2
name: receiver
sources:
HTPC: 'pc'
Chromecast: 'aux1'
Bluray: 'bd'
Wii U: 'game'
* fix pylint error
* Use HA's error log instead of stack trace
* Flipped source mappings, code cleanup
* Adds MoldIndicator sensor platform
This sensor may be used to get an indication for possible mold growth in rooms.
It calculates the humidity at a pre-calibrated indoor point (wall, window).
* Automatic conversion to Fahrenheit for mold_indicator
* Minor change to critical temp label
* Fixed docstrings and styles
* Minor changes to MoldIndicator implementation
* Added first (non-working) implementation for mold_indicator test
* Small style changes
* Minor improvements to mold_indicator
* Completed unit test for mold indicator
* Fix to moldindicator initialization
* Adds missing period. Now that really matters..
* Adds test for sensor_changed function
* Ignore permission errors on setpgid.
When launched in a docker container we got a permission denied error
from setpgid.
* Don't fail if we find our own pidfile.
When we restart using exec we are running a new instance of home-assistant with
the same process id so we shouldn't be surprised to find an existing pidfile in
that case.
* Allow restart to work when started as python -m homeassistant.
When we are started with `python -m homeassistant`, the restart command line
becomes `python /path/to/hass/homeassistant/__main__.py`. But in that case the
python path includes `/path/to/hass/homeassistant` instead of `/path/to/hass`
and we fail on the first import.
Fix this by recognizing `/__main__.py` as part of the first argument and
injecting the proper path as PYTHONPATH environment before we start the new
home-assistant instance.
Sonos platform supports a `party mode` feature that groups all
available players into a single group, of which the calling player
will be the coordinator.
Sonos (SoCo) supports add_uri_to_queue capability, making it possible
to stream media available via HTTP for example. This patch extends
media_player component and sonos platform to support this feature
* Added the `lgtv` platform to control a LG Smart TV running NetCast 3.0
(LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013).
* Fixed multi-line docstring closing quotes
* Rename lgtv to lg_netcast
* Rename lgtv to lg_netcast
* Extracted class to control the LG TV into a separate Python package 'pylgnetcast' and changed requirements accordingly.
* regenerated requirements_all.txt with script
* now uses pylgnetcast v0.2.0 which uses the requests package for the communication with the TV
* fixed lint error: Catching too general exception Exception
* Allow for restart without using parent/child processes.
Assuming that we normally correctly shut down running threads and
release resources, we just do some minimal scrubbing of open file
descriptors and child processes which would stay around across an
exec() boundary.
* Use sys.executable instead of multiprocessing.spawn.get_executable()
* Limit how many file descriptors we try to close.
Don't even try to close on OSX/Darwin until we figure out how to
recognize guarded fds because the kernel will yell at us, and kill
the process.
* Use the close on exec flag on MacOS to clean up.
* Introduce a small process runner to handle restart on windows.
* Handle missing signal.SIGHUP on Windows.
* Add support for providing color_name which accepts a CSS3 valid, human readable string such as red or blue
* Forgot the schema validation!
* ugh farcy
* use html5_parse_legacy_color for more input options
* Add webcolors==1.5 to setup.py
* Block pylint no-member errors on tuple
* add color_name_to_rgb test
* whoops
* revert changes to individual platforms
* If color_name is set, pop it off params and set rgb_color with it
* Forgot to reset wink.py
* Import the legacy function as color_name_to_rgb directly
* reset test_color.py
* Improve light services.yaml
Sonos players can be dynamically set in various modes, for example
as TV players or Line-IN or straming from radios channels, therefore
some methods could not be available, and when invoked they cause
long exceptions to be logged. This partially solves the problem
reducing the output and logging some more informative error message
* AWS SNS notify platform
* Attach kwargs as MessageAttributes
* Initial pass of AWS SQS platform
* Add Lambda notify platform
* Remove unused import
* Change single quotes to double quotes because I am crazy
* Forgot to run pydocstyle
* Improve context support for Lambda
* compress the message_attributes logic
* Added GPM Desktop Plaeyr component
* Updated requirements_all.txt
* Pylint fix
* Updated GPMDP.py to include @balloob's comments
* Updated to work with the latest version of GPMDP
* Removed setting "self._ws.recv()" as a variable
* Made line 52 shorter
* Updated to check weather it is connected or not
* Pylint and @balloob fixes
* Updated with simplified code and pylint fix
* Made `json.loads` shorter
* Pylint fix
* Update google_travel_time.py
* Update google_travel_time.py
* pylint: disable=too-many-instance-attributes
* Add the mode to the title of the sensor
* Expose the travel mode on the sensor attributes
* Big improvements to the Google Travel Time sensor. Allow passing any options that Google supports in the options dict of your configuration. Deprecate travel_mode. Change name format to show the mode
* fu farcy
* Dynamically convert departure and arrival times
* Add a warning if user provides both departure and arrival times
* Add deprecation warning for travel_mode outside options and other minor fixes
* Use a copy of options dict to not overwrite the departure/arrival times constantly.
* Remove default travel_mode, but set default options.mode to driving
* Google doesnt let us query time in the past, so if the date we generate from a time string is in the past, add 1 day
* spacing fix
* Add config validation for all possible parameters
* flake8 and pylint fixes
* Added QwikSwitch platform
farcy - worst than my english teacher
* Clean up comments
* Import only inside functions
* Moved imports, no global var, load_platform
* add_device reworked
* Only serializable content on bus
* Fixed imports & removed some logging
* Bring back the functionality that was removed in PR 1717. This includes the speedtest service and the ability to define the scan times in the configuration file. Restore default functionality of 1 scan per hour on the hour.
* remove unnecessary code.
* Allow /api/ and /api/config to be accessed without auth. If config is accessed without auth, only show minimal information. Also improves comments
* Re-enable auth on /api/ since a lot of tests get broken if it does not require auth
* Move the discovery info from /api/config to /api/discovery_info
* Flake8 fixes
"unix" timestamp is number of seconds since Jan 1, 1970 UTC.
This allows scripts that use templates to generate time
deltas in seconds if desired from state attributes such
as last_updated.
Some examples:
timestamp now is
{{ as_timestamp(now) }}
timstamp of last change is
{{ as_timestamp(states.binary_sensor.garage_door.last_changed) }}
seconds since last change is
{{ as_timestamp(now) - as_timestamp(states.binary_sensor.garage_door.last_changed) }}
* process only last 20 available entries to avoid bombing event
bus when parsing huge feeds
* trigger first update only when HA has completed startup,
allowing components to complete subscriptions to feedreader
events
* quote url in logs for better readability
* Made changes so that the mqtt configuration can accept client keys and certs for auth.
* Need to figure out how the broker_config works, it's failing tests
* Fixed it so all tests passed and ssl feature works for all brokers
which are't embedded
* Bring into line with pep8
* Added config validation which has allowed me to make the code simpler
* Add MySensorsDeviceEntity class to hold the common attributes,
properties and methods for mysensors entities.
* Inherit from MySensorsDeviceEntity class in binary_sensor, light,
sensor and switch mysensors platforms.
* Remove not needed attribute and method for const in GatewayWrapper
class. The const attribute is already set in the wrapped object.
* Clean up state property for mysensors sensor entities.
* Inherit from MySensorsLightRGB in MySensorsLightRGBW class.
* Remove use of get_component in mysensors component and platforms.
* Clean up update method in MySensorsDeviceEntity class.
* bugfix: ignore not existing property in feedreader item
* add info and debug data
* split logic in smaller and hopefully easier to understand functions
When using virtualfish ('virtualenvwrapper' for the fish shell), you
can create a .venv file in a directory that contains the name of a
virtualenv that will be activated automatically when you cd into that
directory. This is a good and useful thing, but since folks will have
different names for their virtualenvs, we should ignore this file.
That... and I'm probably the only one using fish/virtualfish...
Fix test to prevent early exit of mqtt init handler when
both embedded and broker configs are present.
Signed-off-by: Gwendal Grignou <gwendal@gmail.com>
Change the zwave config default path to be valid in all but rare
edge cases. This will let that config value be truely optional.
Also check that libopenzwave is installed and print a warrning if
it cannot be found pointing at the site.
* initial support for generic 433mhz gpio adapters
* rpi-rf: refactor id_on/id_off to code_on/code_off
fits the purpose better and improves understanding
* rpi-rf: use v0.9.4
* rpi-rf: update features and dependencies to v0.9.5
includes the ability to optionally specify a protocol for each switch
* rpi-rf: remove explicit RPi.GPIO dependency
already a dependency of the rpi-rf module
* rpi-rf: make setting gpio, code_on and code_off mandatory
* rpi-rf: remove unused value_template
* rpi-rf: only enable TX once if there are switches
Prevented a switch from being turned on twice.
Made the module regex more robust.
Refactored the code to reduce the amount of network traffic to/from pulseaudio.
Fixed pylint issues
* Bump version of pymysensors to 0.6, which includes the tcp gateway.
* Update requirements_all.txt.
* Replace CONF_PORT with CONF_DEVICE and ATTR_PORT with ATTR_DEVICE.
* Add tcp_port in config.
* Try to guess if tcp or serial gateway is configured, by validating
device name as an ip address. If successful setup tcp gateway, if it
fails, setup serial gateway.
* Update device_state_attributes to show correct device, ethernet or
serial.
* set name to hyperion assets
by specifying the name in the configuration:
light kodi_xxx:
name: "Kodi XXX"
platform: hyperion
host: 192.168.1.222
port: 19444
* Update hyperion.py
fix extra space
This tracker discovers new devices on boot and tracks bluetooth devices
periodically based on interval_seconds value. Devices discovered are
stored with 'BT_' as the prefix for device mac.
Requires PyBluez
* Initial Support for EQ3 Bluetooth Smart Radiator Thermostats
* tox runs successfully
* Moved device specific stuff to bluepy_devices library
* lint fix
Some Sonos devices (e.g SUB) does not have
a upnp media renderer, but are discovered as sonos
devices. Creating a SonosDevice object from such a
device will fail.
When a sonos player goes offline an endless stream of
exceptions is raised. That happens because homeassistant keeps trying
to refresh its status.
This can happen even when a sonos player has gone offline **before**
homeassistant is started. The sonos players take some time before
realizing one of their mates is no longer online, leading to the same
stream of exceptions inside of homeassistant.
Three types of exceptions of can be raised:
- `requests.packages.urllib3.exceptions.MaxRetryError`
- `requests.packages.urllib3.exceptions.NewConnectionError`
- `TimeoutError`
It's not possible to handle all of them with a single `except` block
because they are raised in a random order and after some delays. That
means a 2nd or 3rd exception can take place while handling the 1st one.
The only solution is to check whether a a player is actually reachable
by attempting to connect to a service that must be running on it.
Also all the players in a 'unknown' state should not be polled by
homeassistant (despite of their brand).
I'm going to upstream the `_is_reachable` method I added to the
`sonos.py` file into `SoCo`. In the meantime we must ship this piece
of code with homeassistant.
Signed-off-by: Flavio Castelli <fcastelli@suse.com>
* SCSGATE: Actually cycle through all devices to register
Modify _activate_next_device function to actually cycle through self-devices_to_register instead of simply checking whether there are any and onl registering one
* Deleted extra white lines
* Add STATE_UNAVAILABLE to states that are ignored when writing to the
database. This will avoid a field type error for string if the field
already contains a different type, eg integer.
* Add test for ignored states for influxdb.
* Clean up influxdb tests.
CONF_PURGE_DAYS so it can be changed easier later.
Use 'recorder' domain instead of 'history' domain.
Pass purge_days config directly into Recorder object instead of passing
the config object around.
Issue https://github.com/balloob/home-assistant/issues/1337
When purge_days is set under the history component, recorder.py will
delete all events and states that are older than purge_days days ago.
Currently, this is only done once at start up. A vacuum command is
also run to free up the disk space sqlite would still use after deleting
records.
Change the sensor name schema so nodes are not mixed up. The dot that was pressent before was ignored by home-assistant.
Before name: <skeatchname> <node_id><child_id> eg. wall 107
New name : <skeatchname> <node_id> <child_id> eg. wall 10 7
This will result in a Home Assistant Entity ID of: sensor.wall_10_7
Sometimes py.test leave some packages around in tests/config/deps.
Make sure these do not accidentally get pulled into a commit or
cause a local tox run to fail.
When picking which of the high/low temperatures to display as the
"target", it makes more sense to take the outside temperature into
consideration, rather than the current temperature of the thermostat.
If the temperature outside is less than the temperature of the
thermostat, then we are far more likely to end up in "heating" mode
eventually, and vice versa, regardless of where the current inside
temp falls in the range between high and low.
Sometimes py.test leave some packages around in tests/config/deps.
Make sure these do not accidentally get pulled into a commit or
cause a local tox run to fail.
The setup_platform function is trying to get CONF_LATITUDE and CONF_LONGITUDE,
but the validation schema was not accepting these.
Also moved CONF_MONITORED_CONDITIONS and CONF_ELEVATION to homeassistant.const
because they are used in other places.
* Do not propagate API password in service requests.
It makes service validation fail. The choice is to either handle it as an
optional key in every service handler and make sure it doesn't end up in event
stream and notifications, or to strip it as early as possible.
* Some places still need a forwarded api password.
- Event forwarding/remote api uses the local api password to
authenticate against the remote instance.
- The generated index.html at '/' embeds the api password.
* Do not propagate API password in service requests.
It makes service validation fail. The choice is to either handle it as an
optional key in every service handler and make sure it doesn't end up in event
stream and notifications, or to strip it as early as possible.
* Some places still need a forwarded api password.
- Event forwarding/remote api uses the local api password to
authenticate against the remote instance.
- The generated index.html at '/' embeds the api password.
In order to prevent a potential timing attack, it's important to make
sure the password check takes the same amount of time, regardless of
how many characters in the candidate password match the real password.
This commit does increase the verbosity of the authentication check.
Generally it is a good idea for authentication logic to be very clear,
even if that requires some extra verbosity.
* Expanded homematic component with MAX! support via homegear
Also multithreading fixes
* fixed tox errors
* incorporate changes suggested by balloob
* replaced HomematicConfig Container Class with namedtuple
* fixed lint errors
Since all values coming out of the Thermostat component pass though the
_convert_for_display() method (which handles any necessary rounding),
there is no need to round values that only exist in the internal state
of the thermostat device. It serves no purpose and risks rounding
errors/precision loss.
Instead of nested tracebacks, show a simpler error message.
Config directory: /home/user/.homeassistant
ERROR:homeassistant.util.yaml:duplicate key: "script"
in "/home/user/.homeassistant/configuration.yaml", line 95, column 0
in "/home/user/.homeassistant/configuration.yaml", line 108, column 0
Instead of nested tracebacks, show a simpler error message.
Config directory: /home/user/.homeassistant
ERROR:homeassistant.util.yaml:duplicate key: "script"
in "/home/user/.homeassistant/configuration.yaml", line 95, column 0
in "/home/user/.homeassistant/configuration.yaml", line 108, column 0
* We need to allow extra keys on top level componenet config
fixes#1756
* Add comment about location of hass (fixes#1723)
* Fix for MQTT config validation on the protocol field. (#1765)
* Update frontend with weblink fix
* Fix for light service validation. (#1770)
Incorrect validation tested if passed value was a list instead of
a member of the list.
* Accept group without entities in configuration. (#1768)
* Accept group without entities in configuration.
People seem to use these as placeholders for future expansion of their
home automation dreams, and we used to accept them. We still have to
specify at least one of 'name', 'view' or 'icon' so that the group is
parsed as a dictionary.
* Also accept empty entities: key in a group.
* Additional fix for empty entities value in a group config.
* Version bump to 0.17.1
* Accept group without entities in configuration.
People seem to use these as placeholders for future expansion of their
home automation dreams, and we used to accept them. We still have to
specify at least one of 'name', 'view' or 'icon' so that the group is
parsed as a dictionary.
* Also accept empty entities: key in a group.
* Additional fix for empty entities value in a group config.
Two tests were invariably grinding my system to a halt as it was
applying migrations to an empty sqlite database. This patch reduces
the time of a pytest run from 50 to about 16 seconds on my desktop.
The difference is even more noticable on a slower laptop drive, but
is probably insignificant for all you fancy SSD users.
Accept delay configuration even when someone forgets to indent the time
specification.
Also removed 'weeks' and 'microseconds' from acceptable delay values.
There is a new homeassistant release every 2 weeks and running scripts
are not persisting across restarts. And there is still the option of
using (weeks*7) days if the long delay is really necessary.
And if someone really depends on microsecond delay precision we are
unlikely to be able to provide this accuracy, even milliseconds is
suspect for that matter but will at least allow us to specify some
subsecond delay.
vol.IsFile results in an instance of the IsFile method being returned by
the schema validation process. It needs to be called in order to do the
right thing.
The Updater component doesn't make much sense on dev versions. If you
want to run a production config with the updater enabled, you end up
with an 'Update Available' badge pointing you to the last release
version. This change disables the Updater component on dev and updates
the tests to use a faked version number.
A warning is emitted if the Updater component is disabled to ensure
there is no confusion.
This adds an optional 'mac' configuration option to the platform which
is passed to the underlying Orvibo library. The 'mac' option is required
when the switch is connected to a different subnet to the Home Assistant
host
Users of fahrenheit generally expect to see whole degrees. The fahreneit
scale is suffiently precise that decimals aren't really useful in terms
of temperatures humans care about.
This change rounds fahrenheit values to whole degrees and celsius values
to one decimal place. It also renames the ThermostatDevice._convert()
method to _convert_for_display(), making its purpose more clear. It is
not useful for the min_temp() and max_temp() methods, as those relate to
the internal state of the ThermostatDevice object, and may use different
units. Adding optional source and target units to _convert() would have
added needless complexity, it's cleaner to just use convert() in those
methods.
Calculate average download rate the same way as downloadrate
Add config option for choosing which nzbget variables to monitor, and provide a default
Pep8 fixes
Refactoring and changes based on @balloob's comments
Add nzbget.py to .coveragerc omit list. Check if there are any http
errors (like bad auth) when creating the nzbgetapi class. If there
are, the setup_platform() function will return false. Exceptions are
logged as well.
When a new sensor is created, assign the initial value from the api
instead of simply using None until the first update call.
Also fixes a bug where the test when no payload is given succeeds only
because we run the jinja templating out of memory. Sending an empty
payload instead of trying to fix it through validation for now.
* Service validation for MQTT component.
* Fixes for failing mqtt tests.
- Changed behaviour when both 'payload' and 'payload_template' are provided
instead of silently ignoring the payload_template value.
- Have validation accept any type of payload and leave encoding to paho-mqtt.
Allows for testing the zwave network by sending
a no-op command to all the nodes. In theory,
this will also bring back nodes which have been
put in the "presumed dead" state.
If the polling intensity is zero, specifically
disable polling for that device/sub device.
Have zwave startup wait until the zwave
nework is ready (defined by python openzwave docs):
https://python-openzwave.googlecode.com
SIGNAL_NETWORK_AWAKED : all awake nodes are queried. Some sleeping nodes may be missing.
and
You can safely ask node informations when state >= STATE_AWAKED
This appears to make the polling of nodes a bit more deterministic.
Text Update
Additional additions and better support for volume, and mute. Cleanup
Added rxv to requirements_all
Added yamaha.py to .coveragerc
Made uppercase, and removed tabs
Added requirements variable
Added doc string for lint
Removed global variable, and simplified state as per balloobs suggestion
Refactored the component with balloobs suggestions
-Added import in the method
- Only get receiver information on init
- A bit of cleanup
Remove up and down volume
Uneeded as this is handled by set volume instead
Fixed a lint build error
More lint fixes
Removed unused imports
Lint Fixes
Simplified if statement
Minor refactoring since the init calls update.
Fixed lint error
Just variable naming change
Added support for an optional name for the receiver.
Better error handling, a bit of refactoring based on balloobs suggestions
Fixed lint error.
Another lint error fix
Changed raise to return
Disable pylint error handling
Pylint broad exception
Made exception handling in the setup platform instead of the constructor.
Lint error fix
Refactored the way devices are found. This allows for multiple receivers
Because the LMS discovery mechanism uses the SlimProto protocol to discover the
presence of a Logitech Media server which operates on port 3483/udp and
3483/tcp. But HA uses a different 'CLI' protocol that is typically on port
9090/tcp to query player state.
However the CLI port number is configurable and if someone runs the CLI on a
different port, and has the server configured in configuration.yaml, we get an
error in the logs when we try to connect to 9090/tcp when we find the server
through discovery. Because of the way local slim player discover the server
using SlimProto we can be fairly certain only a single server will run on a
given IP address so if one is already configured with a user defined port, we
should ignore the discovered one that assumes the default port.
Arduino switch: add support for default stat and negate port functionality
Travis changes
Arduino switch: add support for default stat and negate port functionality
Because Travis was configured to have maxiimum 5 arguments allowed in functions, I changed the function constructor signature too ... Paul, 6 parameters for a function is really ok
Arduino Switch: add default state config and negate functionality
* Log error for services called without required attributes, in
media_player, notify and thermostat platforms.
* Add fan property and methods in thermostat demo component.
* Add tests for notify file and thermostat demo component.
* Increase coverage of tests for media_player, notify and thermostat
platforms.
* Fix some PEP issues, but not all. Tests still have old linting
errors.
Makes Zwave's network heal and the controller's soft reset
commands available as service calls. They can be used
in automation to help keep the zwave netwrok healthy.
For example:
automation:
alias: At 2:35am, heal problematic zwave network routes
trigger:
platform: time
after: '2:35:00'
action:
service: zwave.heal
The rewrite addresses a problem with the tellstick hardware dropping
commands when too many simultaneous calls is being made from HA. Also fixes a bug when the dim level was changed externally.
This breaks previous configurations.
The new config for tellstick is
```yaml
tellstick:
signal_repetitions: X
```
Lights and Switches are detected automatically.
Sensors work like before because they do not share any functionality with the other devices and they also needs a complete other configuration.
* Add tests to reach full coverage for helpers/state.py.
* Refactor reproduce_state function in helpers/state.py. Add two dicts,
as global constants, service_attributes and service_to_state. Use
these in combination with the dict of services per domain from
ServiceRegistry, to find the correct service to use in a scene state
change.
* Use break statement in for loop, to break if service was selected
to update state, in preference to update state attributes, ie state
update takes precedence.
* Add ATTR_CODE and ATTR_CODE_FORMAT in const. Import these in
alarm_control_panel and lock platforms instead of making duplicate
constants in multiple modules.
* Use ATTR_MEDIA_CONTENT_TYPE and ATTR_MEDIA_CONTENT_ID in media_player
platform in SERVICE_PLAY_MEDIA and play_media methods, instead of
'media_type' and 'media_id'.
* Fix PEP257 in modified files.
This makes us track WeMo devices by serial number instead of URL. Per
@jaharkes' suggestion, tracking via URL could potentially be a problem
if a device changes to another IP and then appears to be discovered again.
Since we can't track based on mac (for static-configured devices), we
can use the serial number exposed to make sure we're always looking at
a list of unique devices.
The default configuration of the mFi controller generates self-signed
certificates which are valid for short periods of time, and which are
regnerated on start or as needed. This makes requests mad. Since most
people will be using the self-signed certificates anyway, add options
to let them choose non-TLS, or unverified connections if they want/need.
This bumps the mficlient requirement to 0.3.0 for proper handling of
verify=False.
Looking at your code suggestion below I am not sure exactly how other people might want to put in lists. (But I am missing a more general overview of the code)
```
if not isinstance(scene_config,list):
scene_config=[scene_config]
```
But it is there !
And changed "config" to "states" !
I broke this with my fix, where I assumed that we'd always have a wemo
config section if we're running the wemo code. However, if we're fully
auto-detected, we might not.
I broke this with my fix, where I assumed that we'd always have a wemo
config section if we're running the wemo code. However, if we're fully
auto-detected, we might not.
Example Config:
...
modules:
Bedroom:
- temperature
LivingRoom:
- temperature
Outside:
- temperature
Garden:
- rain
- sum_rain_1
- sum_rain_24
The three new parameters stand for:
- rain # Estimated rainfall for today in "mm"
- sum_rain_1 # Rainfall in the last hour in "mm"
- sum_rain_24 # Rainfall in "mm" from 00:00am - 23:59pm
The wemo component was tracking devices by mac to avoid adding duplicates,
but this means we'd never be able to load more than one static wemo, since
they all have mac=None.
This changes the code to track by url, which has to be unique per wemo
anyway, and which we also have for even static wemos.
The wemo component was tracking devices by mac to avoid adding duplicates,
but this means we'd never be able to load more than one static wemo, since
they all have mac=None.
This changes the code to track by url, which has to be unique per wemo
anyway, and which we also have for even static wemos.
Currently we interact with players regardless of thir coordinator
role, hence soco.exceptions.SoCoSlaveException are thrown. The use
of the decorator for each interactive method should address this
Converts 0..255 values that HA expects into a device 0..SCALE value
Example:
HA considers "hall light" at 25 brightness or 10% of 255
Device considers "hall light" at 100 brightness or 10% of 1000
This allows our existing MQTT devices to not change their data format to be used in HA
The exception we were catching incorrectly referenced the client variable
in local scope instead of the module. Also, if we fail to connect we can
get a requests exception, so catch and handle that as well.
* Move S_LIGHT and V_LIGHT from light back to switch platform, to avoid
double devices showing.
* Remove MySensorsLightPlain class from light platform, since it's not
needed anymore.
* A light switch with only a switch, ie no dimmer or
RGB controls, will show as a regular switch device.
Uses the (schiene)[https://pypi.python.org/pypi/schiene/0.14] API to communicate with the webserver of bahn.de
and pulls iformation about a specific connection from the (bahn.de)[http://www.bahn.de/p/view/index.shtml]
webpage. The departure time of the next train for the given connection is shown.
In case of delay, the delay is also shown. Additional `ATTRIBUTES` are used to
inform about e.g. the type of the train, price and if it is ontime.
Usage:
sensor:
platform: deutsche_bahn
from: name_of_start_station
to: name_of_final_station
Problems:
I'm testing it for quite some time, but I have never seen the `ATTRIBUTES` in case
of a delayed train. The `ATTRIBUTES` are directly passed from the `schiene` API. So this
usecase has not been tested yet.
deutsche_bahn ist not supporting the `schiene` api unlike in the swiss_public_transport case.
It's not guaranteed that `schiene` will work forever, infact it can happen that Bahn AG will
intentionally brake the API at some point. In the past Bahn AG has not allways been very supportive
to the opensource community.
Changed the key matching to utilize integer values. It does not report always return the hex marker '0x' in the identifier strings. This Re closes issue #1349
The older (unsupported AirCam) models behave differently and also apparently
suffer some under the last release of the NVR that supported them. Since they
are EOL and not supported by current software, filter them out so we don't
break while trying to extract an image from them.
I only have WeMo Link and Insight devices and assumed model names of other
devices were fairly straightforward.
But it looks like the regular WeMo switch uses 'Socket' as the model name.
This adds tests for the uvc camera module. It's a good thing too,
because I found a few bugs which are fixed here as well:
- Graceful handling of non-integer port
- Failure to take the first host that works when probing host,internalHost
- Failure to detect if neither of them actually work
This also converts the code to only call add_devices once with a listcomp.
The NVR tells us the admin username, but not the password for the
camera. Right now, we assume the default password, which obviously
doesn't work for people that have changed it. The uvcclient library
provides a way to set the cached admin password for a camera, which
is stored in a client-specific location. We can utilize that to
grab the password, falling back to the default if it's unset. With
this, people just need to run a command per camera to set the
admin password on their systems, if it has changed.
Because of problems with the Wallet part of python blockchain library (see #1242 ) , the entire Bitcoin module isn't working currently.
This change does not fix those problems but at least makes the sensor work again for people who don't need Wallet-related functionality.
It also just seems better practice to not set a wallet and call "wallet.get_balance()" when not wallet is set in configuration.
* Add mysensors binary sensor.
* Add discovery platforms to binary_sensor base component.
* Replace device_state_attributes with state_attributes in
binary_sensor base class.
* Fix docstrings.
* Add discovery of binary sensor to mysensors component.
* Add child.type as argument to mysensors device_class.
* Move binary sensor types from sensor to binary_sensor module.
* Fix binary_sensor attribute tests. Use state_attributes instead of
device_state_attributes.
Ubiquiti's Unifi WAP infrastructure has a central controller (like mfi and uvc)
that can be queried for client status. This adds a device_tracker module that
can report the state of any client connected to the controller.
This adds a 'sensor_class' property and attribute, which should be either
None or one of several defined SENSOR_CLASSES to indicate contextual
information about what the sensor is measuring.
* From configuration.yaml is easy to provide iterable elements like lists,
this adds the possibility to provide a list of Sonos hosts using a yaml
and still supports the comma separated string version
* Remove superfluous host reassignment
* Add check if V_LIGHT is in values before sending message in
_turn_on_light.
* Replace super calls with self.
* Remove not needed init method in child classes.
* Remove turn_on method in parent class and add update_ha_state
to _turn_on_light, _turn_on_dimmer and _turn_on_rgb_or_w.
* Make a flatter one level inheritance, with MySensorsLight as parent
with four children, one per light type.
* Break out helper methods. One per plain light, dimmer and RGB/RGBW
children and per update, turn_on and turn_off, nine in total. Put
these in the parent.
* Call the helper methods as needed from the child methods update,
turn_on and turn_off.
* Change name of MySensorsLightLight to MySensorsLightPlain.
* Fix module docstrings according to pep257.
* Change name of color util method from rgb_hex_to_list to
rgb_hex_to_rgb_list.
* Add unit tests for rgb_hex_to_rgb_list.
* Add a light entity class per V_LIGHT, V_DIMMER, V_RGB and V_RGBW.
Make these classes inherit each other up to MySensorsLight class.
* Map the entity classes to their S_TYPE in a dict.
* Check if an entity class map or just an entity class have been passed
to pf_callback_factory before using the entity_class variable in
homeassistant/components/mysensors.py.
* Add rgb_hex_to_list function in homeassistant/util/color.py.
This adds verbose debugging which can be turned on to figure out what is
going on. It also adds a broad exception handler in the worker thread
to avoid dying. If you're running this such that stderr doesn't go to a
log, it can be easy to miss the thread's death.
I wrote all this to try to diagnose #1283, which seems to maybe have
healed itself. But since I have it, I figure we might as well keep it
in case we have trouble in the future.
This bumps the somecomfort requirement to 0.2.1 to pull in a change
that makes handling no-fan systems graceful. Adds a test that should
prove it gives us what we want.
If no fan, then fan is always idle and fanmode is None.
This allows you to get every door, window, smoke, etc zone from your security
panel into HA. This uses the live eventing feature of pynx584, which means you
get instantaneous signaling into HA when a door opens or something happens,
which is handy for automating lights on when doors open after dark, etc.
Requires update to pynx584 0.2
This converts the testing infrastructure to tox for both locally
testing and travis. This is nearly equivalent to the previous testing
with the only exception that linting fails with the first tool to fail
and won't process all of them.
Slightly tricky thing is that tox resets *all* of the environment for
it's subprocess runs by default. A couple of the dependencies we have
will not install in non UTF8 locales: temper-python & XBee.
This makes the UVC camera_image() method not log into the camera on
every single image fetch, which reduces load on hass and the camera,
and lowers the latency to get an actual image fetched.
This lets you optionally only add thermostats by location or
specific device id, instead of all the thermostats in your
account. This would be helpful if you have two devices in different
houses (i.e vacation home), etc.
This adds tests for the influxdb component. It also fixes a bug,
where username and password are required, but not gracefully
handled if they're missing from config.
This also fixes issue #1214, and I think another bug. The splunk
code will just take the value of state.state and try to serialize
it to json if it can't make it into a number. It did this before
I generalized that code. Since json.dumps() will fail on most anything
complicated, I think the right thing to do is *not* try to do that.
This adds state_as_number(), a helper method that tries to interpret
state as a number, for cases we can predict. It's a generalization of
what is copy-and-paste-ed into multiple other places.
* Make light controllable independently with types V_LIGHT, V_DIMMER,
V_RGB and V_RGBW. V_RGBW is not implemented in the frontend yet.
* Add discovery for light platform.
* Add optimistic mode config setting for switch and light
to allow feedback state from actuator.
* Move S_LIGHT, V_LIGHT, V_STATUS types from switch to light platform.
* Change node update logging to debug from info level.
* Fix some inaccurate comments.
This is extremely useful if you want to support wemos that are on
another subnet or across a VPN. It also lets you sidestep the discovery
process, which is problematic for a lot of people and situations.
In order for this to work, we need to bump the pywemo requirement to
0.3.10, which includes my changes to make this possible.
WeMo devices can be manually configured by adding a static section to
the config, like this:
switch:
platform: wemo
static:
- 192.168.100.5
- 192.168.100.6
This extends the HoneywellUSThermostat functionality to find and add
all thermostats in your account. So, we add a new config element called
'region' that is the primary trigger for this, and remove the 'id'
trigger since it was never in a released version.
This does a few extra things:
- It names the thermostat what you have it named in your account,
which is not something we get to know *unless* we emumerate.
- It makes all thermostats on a given account use the same session,
and thus we have to avoid doing an explicit login every time we
refresh our data. That was causing some rate-limiting on their
side when I was debugging, so this is probably good. Now, we use
their existing keepalive pinger to determine if we're still logged
in and only re-login if we need to.
Like recorder, this component listens to all events and reports any
that it can to a graphite installation. This makes it easy to use
graphite for all your data collection and analysis. If you run
carbon-cache (the backend for graphite) on the local machine, no
configuration is required other than enabling the component.
For more info on graphite: http://graphite.wikidot.com/
Most of the mFi sensors are able to reasonably provide accurate
readings to a tenth of a unit or so. This patch rounds them for
better display in the UI. Normally, I would expect this to be a view
action instead of altering the actual data emitted, but since these
values are reasonable for sensor precision, we're not really losing
anything. I followed the model from the openweathermap component, which
rounds for readability in the backend.
When we update the mFi server for the state of a switch, the new
state is not always reported immediately if we update right after
the action (the server is not RESTful).
This patch adds some internal target-state handling to report the
desired state on the next poll, allowing any subsequent polls to
override that state.
Also, bump the version requirement for mficlient to 0.2.2 to absorb
a bug fix.
This adds support for NetworX-based alarm panels and should work for
any such panel equipped with a NX584 serial interface module. This
includes NX-4/6/8/8E, where the NX8E has this interface built-in.
It requires the pynx584 module, and requires running the server
component somewhere that has connectivity to the panel via serial,
which may include a serial-over-lan connection.
Added KeyboardInterrupt handling back to block_till_stopped method.
This is because Keyboard Interrupts are sent to both the parent and
child process in no particular order so both need to handle the
interrupt.
* The application of the version check in unit_of_measurement was
messed up after the last refactor. Fix that again.
* An error could occur in device_state_attributes if there was a
mismatch between used value_type in the device and mysensors
version in config. Add try... except to handle that.
Bump pyvera version.
Bump pywemo version.
Add unavailable status before properly initialised for maker and insight.
This adds support for Ubiquiti's UniFi Video cameras via their
NVR device (or service). By configuring just the address of the
NVR and a valid API key, all cameras are discovered and enabled,
including direct-to-camera image snapshot-based video support.
Major bugfix. ``` get_bulbs ``` and similar methods were always returning empty lists.
Better unit tests have been added to https://github.com/bradsk88/python-wink to avoid this regression.
This adds support for the US variant of the Honeywell connected
thermostat. The interface is super simple, so this doesn't add
any external dependencies. It supports basic temperature, setpoint,
and control.
Issue #998 notes that the existing honeywell module doesn't work
for US models, which is because they are totally different. In order
to indicate to the honeywell platform module that the thermostat
is a US-type, we key off of whether or not the thermostat id is
provided. This is something that US people have (and require to
identify one of potentially multiple thermostats in their account)
and EU people will not.
1. Moved RESTART_EXIT_CODE to constants so it can safely be used by
__main__.py.
2. Allowed __main__/main to return the desired exit code.
3. Forwarded the child processes exit code to the parent process to be
duplicated.
4. Added —debug flag to pass command to force Home Assistant to run in
only one process. A warning is printed to STDERR to indicate HASS is in
debug mode. Another is printed if HASS requests a restart in debug
mode. A restart request in debug mode will quit.
5. Added an argument to __main__/main/setup_and_run_hass to indicate
that it is running in the top process. This tells it to return the exit
code rather than exiting.
* The application of the version check in unit_of_measurement was
messed up after the last refactor. Fix that again.
* An error could occur in device_state_attributes if there was a
mismatch between used value_type in the device and mysensors
version in config. Add try... except to handle that.
Light and ZWaveDeviceEntity both have overwritten the property state_attributes
This includes the device specific attributes in the state_attributes again
This adds a default 30 second timeout on every test method so that
deadlocks or broken threads are move obvious in travis. It also passes
-v by default to make things a little more verbose on where things
fail when they are failing.
This adds a new function to history module which returns significant
states. For most domains this is the list of state changes. For the
thermostat domain this also includes attribute changes, so that
changes in the current_temperature are exposed to the graphing layer.
Closes#881
Some domains, like thermostat, need all state records, not just state
change ones, to provide accurate graphs. This introduces a new db
migration which adds a 'domain' column to all states so that is a fast
query.
Indexes were added to help with query performance.
This includes a data migration which post-date populates domain. On
large HA dbs this might take real time, as it has to touch every state
row. 100 MB db (91k states) updated in a couple of seconds on my
reasonably fast server. Be forewarned.
This is part of bug #881
As discussed here ( https://www.domoticz.com/forum/viewtopic.php?f=6&t=5661 ) this components reports two different power consumption values.
Unfortunately only one of them is correct. Both of them map to the exactly same object id.
This bugfix gets rid of the incorrect one.
* Add 'available' property. Return True by default.
* Use new property in update_ha_state(). If available is False, set
state to 'unavailable', through constant.
* Add STATE_UNAVAILABLE constant 'unavailable' in const.py.
* Fix docstrings in entity.py and const.py, according to PEP257.
Ignore D203 and D105.
Support the SCSGate device. This will allow home-assistant to interact
with BTicino/Legrand MyHome system.
Signed-off-by: Flavio Castelli <flavio@castelli.me>
Added test for entity customization from configuration. Processes a
sample configuration to hide an entity, creates the entity, updates ha
state, and then verifies customization made it through.
The package util tests were revised to pull the external library
pyhelloworld3 from an internal source rather than external. This speeds
up tests, makes tests more reliable, and removes dependency on internet
connection.
The universal media player contained a private method that was replaced
by the update method. It was meant to be removed and wasn’t. This
commit removed that method.
Changed the HASS Core test that tested KeyboardInterrupt handling to
now test SIGTERM handling. KeyboardInterrupts are no longer handled in
the HASS application process as they are handled in the HASS parent
process. SIGTERM is the proper way to now stop HASS.
1. Removed handling of KeyboardInterrupt. This will no longer happen
now that HASS is run in a subprocess. The KeyboardInterrupt will not be
sent to the parent process which will send a SIGTERM to the HASS
process.
2. Fixed logger warning about not being able to bind to SIGTERM.
3. Removed check for Windows OSs when binding to SIGTERM. This check
was originally put in place when HASS was binding to SIGQUIT. SIGTERM
exists in NT OSs, so the check is no longer required.
3. Now returning exit code of 100 when requesting a restart. This will
allow the parent process to only restart HASS if it is specifically
requested and not just on any encountered crash.
To be able to handle new platforms with multiple used v_types but
single states, a new more strict mapping was required. Each s_type is
now mapped to its corresponding v_type(s) in a dict of lists.
Implemented an OS and environment safe restart service. This works by
running Home Assistant in a child process. If the child process
terminates with an exit code > 0, HASS is restarted. SIGTERM and
KeyboardInterrupts to the parent process are forwarded to the child
process. KeyboardInterrupts will only be forwarded once. The second
KeyboardInterrupt will be handled by the parent.
* Add version check in unit_of_measurement, to avoid error.
* Remove not needed metric check in unit_of_measurement.
* Add more value types to unit_of_measurement.
* Fix unit prefix
* Remove unused SCAN_INTERVAL variable.
Devices were not added without persistence enabled and restart of HA.
Node id was added to defaultdict(list) by mistake when checking if list
of defaultdict was empty.
* Fix adding devices in mysensors_callback.
* Change devices to regular dict.
Entity ids will now look like this:
sensor.philio_technology_corporation_psm021_slim_multisensor_doorwindow_sensor_7
sensor.philio_technology_corporation_psm021_slim_multisensor_luminance_7
sensor.philio_technology_corporation_psm021_slim_multisensor_motion_sensor_7
sensor.philio_technology_corporation_psm021_slim_multisensor_tamper_sensor_7
sensor.philio_technology_corporation_psm021_slim_multisensor_temperature_7
sensor.philio_technology_corporation_psm021_slim_multisensor_doorwindow_sensor_8
sensor.philio_technology_corporation_psm021_slim_multisensor_luminance_8
sensor.philio_technology_corporation_psm021_slim_multisensor_motion_sensor_8
sensor.philio_technology_corporation_psm021_slim_multisensor_tamper_sensor_8
sensor.philio_technology_corporation_psm021_slim_multisensor_temperature_8
And if there is several values of the same type in a node the instance id will be appended like this (three switches in the same device):
switch.fibaro_system_unknown_type0202_id1002_switch_9
switch.fibaro_system_unknown_type0202_id1002_switch_9_2
switch.fibaro_system_unknown_type0202_id1002_switch_9_3
1. service decorator was overwriting the function name with one of its
arguments.
2. Accidentally left an extra argument in track_sunrise.
3. Added track_utc_time_change decorator.
1. Added HASS to the arguments for callbacks that are created with
event decorators.
2. Added a service decorator.
3. Updated example.py in the example config to use the event decorators.
This revision of event decorators removes much of the complexity. The
decorated functions are no longer wrapped with a class that tracks
last_run, etc. Bootstrap now gives hass to the event_decorators module
before initializing components so the decorators no longer require
activation.
1) helpers/event should not import the sun component unless it is
requested. This prevents circular import.
2) fixed import typo in bootstrap
2) bootstrap cannot import event_decorators until it is needed because
this leads to a circular import.
Created event decorators for custom components. Decorators were created
for the events: track_state_change, track_sunrise, track_sunset, and
track_time_change.
Z-Wave have a unique node id, this is now added to the entity name.
This is a change will break old configs. The Z-Wave entity_id will have to be updated in configurations.
The reason for this change is that the old behavior created duplicate entity_ids if you have several similar devices. The order devices is included is not consistent so when the service was restarted the entity ids could change and the configuration for entities will be invalid.
There was also inconsistencies between the naming for sensors and switches.
(cherry picked from commit 33a78df)
Also fix so it does not require ip, port, username and password when using local smtp server.
Add debug config.
Signed-off-by: Robert Marklund <robbelibobban@gmail.com>
If the computer is sleeping that are running xbmc then
the traceback is printed in the log all the time.
Keep the traceback in debug mode of the module if needed.
Signed-off-by: Robert Marklund <robbelibobban@gmail.com>
Use select statment to show if db exits instead of
'SHOW DATABASES' which cant be run by a non admin user.
See https://github.com/influxdata/influxdb/issues/4785 for more info.
Also influxdb dont like empty writes('') so ignore state changes of that kind,
this happens on startup of home assistant.
Signed-off-by: Robert Marklund <robbelibobban@gmail.com>
Config can now specify one or more hosts to connect and
also a interface_addr to multicast on if multiple interfaces exists.
Signed-off-by: Robert Marklund <robbelibobban@gmail.com>
The toggle function in the Entity ABC was using state == STATE_ON to
determine whether the entity was on. This was revised to use the is_on
property instead.
Added a sample nginx configuration with instructions detailing how to
setup a very secure HTTPS server for HA that servers over standard
ports without requiring HA to run as root.
The proliphix nt10e is an early network thermostat that supports an
HTTP interface. This adds basic support for it to home-assistant (get
/ set heating setback).
In order for the polymer thermostat component to have sensible step
values the min / max values have to be round numbers. The current code
only does that for systems running in degrees C. For those of us in
silly land that still function in degrees F, this causes some
oddities in the UI.
Always round mix / max values to make it good no matter what
fundamental units we are in.
Renamed update_state method in universal media player to update so that
it would be called by HA when the state was being published. Moved the
update_ha_state to a function inside of __init__. Updated the tests
accordingly.
Forced all parsed attribute configurations to be of length 2. Removed
entity_id=None option from entity lookups. Explicitly passed entity
lookup information to _entity_lkp.
The dependencies property was only being called once by the __init__
method so it was removed and the code was moved to the __init__ method.
The tests were updated to reflect this.
The active_child_state property was unnecessary as it was not being
referenced outside the class. This commit removes it and updates the
tests accordingly.
Revised universal media player to cache the active player when updating
the state when any of the children change. Revised tests to accommodate
this change.
1) Removed children property because it was only being used by one
method.
2) Removed option to return state as object from _entity_lkp as it was
no longer needed.
3) Used hass.states.get to get entity state objects.
4) Revised test to remove children property.
Changed universal media player to use the call_from_config helper to
call services specified in the configuration file. This was done to
copy what is done in the Alexa and Automation components.
Events may be used to start inclusion / exclusion of zwave devices.
This is especially useful in the case of a Z-Wave stick without
"hardware" inclusion button.
* Wrap existing SerialGateway instance instead of subclassing
SerialGatewat class.
* Add S_BINARY in switch platform only in version 1.5 of mysenors api.
* Use version 0.4 of pymysensors.
* Show gateway port as state attribute.
This also fixes a problem where the sensor is left uninitialized when the energy meter temporarily has lost connection with the hub. This caused the ELIQ Online server to return HTTP error 400: "user have no current power data", which in turn caused the used eliq library to fail during JSON parsing (issue reported).
By using the configuration option "use_events:yes" in the device_tracker section,
only 'enter'/'leave' events are considered to calculate the state of a tracker device.
The home zone is defined as the owntracks region 'home'. Other regions may also be defined, the name of
the region is then used as state for the device. All owntracks regions, the 'Share' setting must be enabled in the app.
YAML aliases/anchors can make repetitive configuration sections easier
to deal with. However when dealing with dictionaries, care needs to be
taken to not modify the original anchor since PyYAML utilizes a
reference when encountering an alias instead of a copy of the
dictionary.
* Fix cleaner user config.
* Remove bad disabling of linting.
* Extract default mysensors version into constant.
* Clean up selection of mysensors.CONST from version.
* Update mysensors update decorator to add devices and update values
in one go.
* Fix persistence update.
* Clean up setup of ports.
* Setup of mysensors platforms from main mysensors component.
* Clean up v_types selection in mysensors sensor platform.
* Fix s_types and v_types selection version dependency in platforms.
In combination with resetting the log level on the handlers, this
allows messages lower than the default INFO to be logged when using
the logger component.
Entity may not be picked up exactly by the speech recognition. Instead
of doing an exact string match, look for names which are phonetically
similar and choose the best match above a certain threshold.
This helps as entity names may often be pronoun's (Dave's bedroom) and
this allows for some minor mistakes i.e "the bedroom" will successfully
match against a switch called "bedroom"
It introduces a new library dependency, fuzzywuzzy for comparisons.
When using a radio stream, the name of the station is often available in
currentsong['name']. Just like the 'mpc' CLI client, this change displays
the name of the station before the current song title.
For example: "Mick Jagger - Let's Work" becomes "Radio 10: Mick Jagger - Let's Work"
* Add support for multiple serial gateways.
* Fix serialization of python objects by adding dict representation of
classes.
* Add support for showing more than one child value type per entity.
The entity state is always only one value type. This is defined by
the platform value types. Value types that are not defined as the
platform value type are shown as state_attributes.
* Add more unit of measurement types.
* Clean up code.
* Add a general mysensors component. This sets up the serial comm
with the gateway through pymysensors. The component also
contains a decorator function for the callback function of
mysensors platforms. Mysensors platforms should create a
function that listens for the node update event fired by the
mysensors component. This function should call another
function, that uses the decorator, and returns a dict. The dict
should contain a list of which mysensors V_TYPE values the
platform handles, the platfrom class and the add_devices
function (from setup_platform).
* Change existing mysensors sensor platform to depend on the new
mysensors component.
* Add a mysensors switch platform. The switch platform takes
advantage of new functionality from the the fork of pymysensors
https://github.com/MartinHjelmare/pymysensors, that enables the
gateway to send commands to change node child values.
* Change const and is_metric to global constants, in the mysensors
component and import const depending on the mysensors version
used.
* Change variables devices and gateway to global variables.
* Add some debug logging at INFO log level.
Make sure you are running the latest version of Home Assistant before reporting an issue.
You should only file an issue if you found a bug. Feature and enhancement requests should go in [the Feature Requests section](https://community.home-assistant.io/c/feature-requests) of our community forum:
**Home Assistant release (`hass --version`):**
**Python release (`python3 --version`):**
**Component/platform:**
**Description of problem:**
**Expected:**
**Problem-relevant `configuration.yaml` entries and steps to reproduce:**
**Pull request in [home-assistant.io](https://github.com/home-assistant/home-assistant.io) with documentation (if applicable):** home-assistant/home-assistant.io#
**Example entry for `configuration.yaml` (if applicable):**
```yaml
```
**Checklist:**
If user exposed functionality or configuration variables are added/changed:
- [ ] Documentation added/updated in [home-assistant.io](https://github.com/home-assistant/home-assistant.io)
If code communicates with devices, web services, or a:
- [ ] Local tests with `tox` run successfully. **Your PR cannot be merged unless tests pass**
- [ ] New dependencies have been added to the `REQUIREMENTS` variable ([example][ex-requir]).
- [ ] New dependencies are only imported inside functions that use them ([example][ex-import]).
- [ ] New dependencies have been added to `requirements_all.txt` by running `script/gen_requirements_all.py`.
- [ ] New files were added to `.coveragerc`.
If the code does not interact with devices:
- [ ] Local tests with `tox` run successfully. **Your PR cannot be merged unless tests pass**
- [ ] Tests have been added to verify that the new code works.
@@ -4,69 +4,10 @@ Everybody is invited and welcome to contribute to Home Assistant. There is a lot
The process is straight-forward.
- Fork the Home Assistant [git repository](https://github.com/balloob/home-assistant).
- 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.
-Check it with ``pylint`` and ``flake8``.
- Create a Pull Request against the [**dev**](https://github.com/balloob/home-assistant/tree/dev) branch of Home Assistant.
-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 read the next sections and get more details.
Still interested? Then you should take a peak at the [developer documentation](https://home-assistant.io/developers/) to get more details.
## Adding support for a new device
For help on building your component, please see the [developer documentation](https://home-assistant.io/developers/) on [home-assistant.io](https://home-assistant.io/).
After you finish adding support for your device:
- Add a link to the website of your device/service/component in the "examples" listing of the `README.md` file.
- Add any new dependencies to `requirements_all.txt` if needed. There is no ordering right now, so just add it to the end of the file.
- Update the `.coveragerc` file to exclude your platform if there are no tests available.
- Provide some documentation for [home-assistant.io](https://home-assistant.io/). It's OK to just add a docstring with configuration details (sample entry for `configuration.yaml` file and alike) to the file header as a start. Visit the [website documentation](https://home-assistant.io/developers/website/) for further information on contributing to [home-assistant.io](https://github.com/balloob/home-assistant.io).
- Make sure all your code passes ``pylint`` and ``flake8`` (PEP8 and some more) validation. To check your repository, run `./script/lint`.
- Create a Pull Request against the [**dev**](https://github.com/balloob/home-assistant/tree/dev) branch of Home Assistant.
- Check for comments and suggestions on your Pull Request and keep an eye on the [Travis output](https://travis-ci.org/balloob/home-assistant/).
If you add a platform for an existing component, there is usually no need for updating the frontend. Only if you've added a new component that should show up in the frontend, there are more steps needed:
- Update the file [`home-assistant-icons.html`](https://github.com/balloob/home-assistant/blob/master/homeassistant/components/frontend/www_static/polymer/resources/home-assistant-icons.html) with an icon for your domain ([pick one from this list](https://www.polymer-project.org/1.0/components/core-elements/demo.html#core-icon)).
- Update the demo component with two states that it provides.
- Add your component to `home-assistant.conf.example`.
Since you've updated `home-assistant-icons.html`, you've made changes to the frontend:
- Run `build_frontend`. This will build a new version of the frontend. Make sure you add the changed files `frontend.py` and `frontend.html` to the commit.
### Setting states
It is the responsibility of the component to maintain the states of the devices in your domain. Each device should be a single state and, if possible, a group should be provided that tracks the combined state of the devices.
A state can have several attributes that will help the frontend in displaying your state:
-`friendly_name`: this name will be used as the name of the device
-`entity_picture`: this picture will be shown instead of the domain icon
-`unit_of_measurement`: this will be appended to the state in the interface
-`hidden`: This is a suggestion to the frontend on if the state should be hidden
These attributes are defined in [homeassistant.components](https://github.com/balloob/home-assistant/blob/master/homeassistant/components/__init__.py#L25).
### Proper Visibility Handling
Generally, when creating a new entity for Home Assistant you will want it to be a class that inherits the [homeassistant.helpers.entity.Entity](https://github.com/balloob/home-assistant/blob/master/homeassistant/helpers/entity.py) class. If this is done, visibility will be handled for you.
You can set a suggestion for your entity's visibility by setting the hidden property by doing something similar to the following.
```python
self.hidden=True
```
This will SUGGEST that the active frontend hides the entity. This requires that the active frontend support hidden cards (the default frontend does) and that the value of hidden be included in your attributes dictionary (see above). The Entity abstract class will take care of this for you.
Remember: The suggestion set by your component's code will always be overwritten by user settings in the configuration.yaml file. This is why you may set hidden to be False, but the property may remain True (or vice-versa).
### Working on the frontend
The frontend is composed of [Polymer](https://www.polymer-project.org) web-components and compiled into the file `frontend.html`. During development you do not want to work with the compiled version but with the seperate files. To have Home Assistant serve the seperate files, set `development=1` for the *http-component* in your config.
When you are done with development and ready to commit your changes, run `build_frontend`, set `development=0` in your config and validate that everything still works.
### Notes on PyLint and PEP8 validation
In case a PyLint warning cannot be avoided, add a comment to disable the PyLint check for that line. This can be done using the format `# pylint: disable=YOUR-ERROR-NAME`. Example of an unavoidable PyLint warning is if you do not use the passed in datetime if you're listening for time change.
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|
description:Returns message if API is up and running.
tags:
- Core
responses:
200:
description:API is up and running
schema:
$ref:'#/definitions/Message'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/config:
get:
summary:API alive message
description:Returns the current configuration as JSON.
tags:
- Core
responses:
200:
description:Current configuration
schema:
$ref:'#/definitions/ApiConfig'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/discovery_info:
get:
summary:Basic information about Home Assistant instance
tags:
- Core
responses:
200:
description:Basic information
schema:
$ref:'#/definitions/DiscoveryInfo'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/bootstrap:
get:
summary:Returns all data needed to bootstrap Home Assistant.
tags:
- Core
responses:
200:
description:Bootstrap information
schema:
$ref:'#/definitions/BootstrapInfo'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/events:
get:
summary:Array of event objects.
description:Returns an array of event objects. Each event object contain event name and listener count.
tags:
- Events
responses:
200:
description:Events
schema:
type:array
items:
$ref:'#/definitions/Event'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/services:
get:
summary:Array of service objects.
description:Returns an array of service objects. Each object contains the domain and which services it contains.
tags:
- Services
responses:
200:
description:Services
schema:
type:array
items:
$ref:'#/definitions/Service'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/history:
get:
summary:Array of state changes in the past.
description:Returns an array of state changes in the past. Each object contains further detail for the entities.
tags:
- State
responses:
200:
description:State changes
schema:
type:array
items:
$ref:'#/definitions/History'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/states:
get:
summary:Array of state objects.
description:|
Returns an array of state objects. Each state has the following attributes: entity_id, state, last_changed and attributes.
tags:
- State
responses:
200:
description:States
schema:
type:array
items:
$ref:'#/definitions/State'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/states/{entity_id}:
get:
summary:Specific state object.
description:|
Returns a state object for specified entity_id.
tags:
- State
parameters:
- name:entity_id
in:path
description:entity_id of the entity to query
required:true
type:string
responses:
200:
description:State
schema:
$ref:'#/definitions/State'
404:
description:Not found
schema:
$ref:'#/definitions/Message'
default:
description:Error
schema:
$ref:'#/definitions/Message'
post:
description:|
Updates or creates the current state of an entity.
tags:
- State
consumes:
- application/json
parameters:
- name:entity_id
in:path
description:entity_id to set the state of
required:true
type:string
- $ref:'#/parameters/State'
responses:
200:
description:State of existing entity was set
schema:
$ref:'#/definitions/State'
201:
description:State of new entity was set
schema:
$ref:'#/definitions/State'
headers:
location:
type:string
description:location of the new entity
default:
description:Error
schema:
$ref:'#/definitions/Message'
/error_log:
get:
summary:Error log
description:|
Retrieve all errors logged during the current session of Home Assistant as a plaintext response.
tags:
- Core
produces:
- text/plain
responses:
200:
description:Plain text error log
default:
description:Error
schema:
$ref:'#/definitions/Message'
/camera_proxy/camera.{entity_id}:
get:
summary:Camera image.
description:|
Returns the data (image) from the specified camera entity_id.
tags:
- Camera
produces:
- image/jpeg
parameters:
- name:entity_id
in:path
description:entity_id of the camera to query
required:true
type:string
responses:
200:
description:Camera image
schema:
type:file
default:
description:Error
schema:
$ref:'#/definitions/Message'
/events/{event_type}:
post:
description:|
Fires an event with event_type
tags:
- Events
consumes:
- application/json
parameters:
- name:event_type
in:path
description:event_type to fire event with
required:true
type:string
- $ref:'#/parameters/EventData'
responses:
200:
description:Response message
schema:
$ref:'#/definitions/Message'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/services/{domain}/{service}:
post:
description:|
Calls a service within a specific domain. Will return when the service has been executed or 10 seconds has past, whichever comes first.
tags:
- Services
consumes:
- application/json
parameters:
- name:domain
in:path
description:domain of the service
required:true
type:string
- name:service
in:path
description:service to call
required:true
type:string
- $ref:'#/parameters/ServiceData'
responses:
200:
description:List of states that have changed while the service was being executed. The result will include any changed states that changed while the service was being executed, even if their change was the result of something else happening in the system.
schema:
type:array
items:
$ref:'#/definitions/State'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/template:
post:
description:|
Render a Home Assistant template.
tags:
- Template
consumes:
- application/json
produces:
- text/plain
parameters:
- $ref:'#/parameters/Template'
responses:
200:
description:Returns the rendered template in plain text.
schema:
type:string
default:
description:Error
schema:
$ref:'#/definitions/Message'
/event_forwarding:
post:
description:|
Setup event forwarding to another Home Assistant instance.
tags:
- Core
consumes:
- application/json
parameters:
- $ref:'#/parameters/EventForwarding'
responses:
200:
description:It will return a message if event forwarding was setup successful.
schema:
$ref:'#/definitions/Message'
default:
description:Error
schema:
$ref:'#/definitions/Message'
delete:
description:|
Cancel event forwarding to another Home Assistant instance.
tags:
- Core
consumes:
- application/json
parameters:
- $ref:'#/parameters/EventForwarding'
responses:
200:
description:It will return a message if event forwarding was cancelled successful.
schema:
$ref:'#/definitions/Message'
default:
description:Error
schema:
$ref:'#/definitions/Message'
/stream:
get:
summary:Server-sent events
description:The server-sent events feature is a one-way channel from your Home Assistant server to a client which is acting as a consumer.
tags:
- Core
- Events
produces:
- text/event-stream
parameters:
- name:restrict
in:query
description:comma-separated list of event_types to filter
required:false
type:string
responses:
default:
description:Stream of events
schema:
type:object
x-events:
state_changed:
type:object
properties:
entity_id:
type:string
old_state:
$ref:'#/definitions/State'
new_state:
$ref:'#/definitions/State'
definitions:
ApiConfig:
type:object
properties:
components:
type:array
description:List of component types
items:
type:string
description:Component type
latitude:
type:number
format:float
description:Latitude of Home Assistant server
longitude:
type:number
format:float
description:Longitude of Home Assistant server
location_name:
type:string
unit_system:
type:string
description:The system for measurement units
time_zone:
type:string
version:
type:string
DiscoveryInfo:
type:object
properties:
base_url:
type:string
location_name:
type:string
requires_api_password:
type:boolean
version:
type:string
BootstrapInfo:
type:object
properties:
config:
$ref:'#/definitions/ApiConfig'
events:
type:array
items:
$ref:'#/definitions/Event'
services:
type:array
items:
$ref:'#/definitions/Service'
states:
type:array
items:
$ref:'#/definitions/State'
Event:
type:object
properties:
event:
type:string
listener_count:
type:integer
Service:
type:object
properties:
domain:
type:string
services:
type:object
additionalProperties:
$ref:'#/definitions/DomainService'
DomainService:
type:object
properties:
description:
type:string
fields:
type:object
description:Object with service fields that can be called
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.