* 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 c87238e8b5d3a67c035b1a97d5b5b9af8f6483bc.
* 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.
* 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,68 +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 any new dependencies to `requirements_all.txt` if needed. Use `script/gen_requirements_all.py`.
- 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
temperature_unit:
type:string
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
# Describes the format for available device tracker services
see:
description:Control tracked device
fields:
mac:
description:MAC address of device
example:'FF:FF:FF:FF:FF:FF'
dev_id:
description:Id of device (find id in known_devices.yaml)
example:'phonedave'
host_name:
description:Hostname of device
example:'Dave'
location_name:
description:Name of location where device is located (not_home is away)
example:'home'
gps:
description:GPS coordinates where device is located (latitude, longitude)
example:'[51.509802, -0.086692]'
gps_accuracy:
description:Accuracy of GPS coordinates
example:'80'
battery:
description:Battery level of device
example:'100'
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.