From ee606cac14a500a5b1aa62e9a80d69f108b37ff6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 00:04:10 +0100 Subject: [PATCH 001/123] Fix yuotube link --- .../2016-12-17-text-to-speech-aquostv-flic-zamg.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index 13e90e4527a..9790da7ddc8 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -11,14 +11,14 @@ categories: Release-Notes og_image: /images/blog/2016-12-0.35/social.png --- -5000 stars on GitHub, 2000 people in out Gitter chatroom and over a million monthly pageviews. I don't think we could wish for a better place to be at the end of 2016. Feels like an early Christmas present! Our early one for you is 0.35. It's not a single thing inside a nice wrapping, more like several little gifts inside the 0.35 box. +5000 stars on GitHub, 2000 people in out Gitter chatroom and over a million monthly page views. I don't think we could wish for a better place to be at the end of 2016. Feels like an early Christmas present! Our early one for you is 0.35. It's not a single thing inside a nice wrapping, more like several little gifts inside the 0.35 box. This will be the last release of 2016 as our developers are taking a well deserved break. We will be back in 2017! ## {% linkable_title Text to Speech %} With the addition of a [text-to-speech][tts] component by [@pvizeli] we have been able to bring Home Assistant to a whole new level. The text-to-speech component will take in any text and will play it on a media player that supports to play media. We have tested this on Sonos, Chromecast, and Google Home. -https://www.youtube.com/watch?v=Ke0QuoJ4tRM +[https://www.youtube.com/watch?v=Ke0QuoJ4tRM](https://www.youtube.com/watch?v=Ke0QuoJ4tRM) ## {% linkable_title Call for help with HASSbian (our Raspberry Pi image) %} In an effort to make Home Assistant, we're planning to extend the things that people can do out of the box with HASSbian, our Raspberry Pi image. As you might know, the image is currently maintained by [@Landrash]. However he also spends a lot of time on improving the docs and helping out with a ton of other things. @@ -40,7 +40,7 @@ The [GPSLogger](https://home-assistant.io/components/device_tracker.gpslogger/) - Sensor: Support weather conditions from Austrian [ZAMG][zamg] ([@mjl]) - Verisure: Add Verisure smartcam capture service ([@turbokongen]) - Binary sensor: [Flic][flic] button support added ([@soldag]) -- Sensor: Support for [SenseHat][sensehat] ([@farminf]) +- Sensor: Support for [Sense HAT][sensehat] ([@farminf]) - Binary sensor: [Hikvision][hikvision] binary sensor support ([@mezz64]) - [Text-to-speech][tts] support ([@pvizeli]) - Sensor: Support for Broadlink [sensors][bl-sensor] ([@Danielhiversen]) From 03f680c07835db6d5a7150f4f2b1e434e6a284a1 Mon Sep 17 00:00:00 2001 From: Keaton Taylor Date: Sun, 18 Dec 2016 02:44:34 -0600 Subject: [PATCH 002/123] example for optional values (#1562) Added where to place optional values relay_time and state_pull_mode. --- source/_components/cover.rpi_gpio.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/cover.rpi_gpio.markdown b/source/_components/cover.rpi_gpio.markdown index f152aad8b79..3b2205d724b 100644 --- a/source/_components/cover.rpi_gpio.markdown +++ b/source/_components/cover.rpi_gpio.markdown @@ -27,6 +27,8 @@ To enable Raspberry Pi Covers in your installation, add the following to your `c # Example configuration.yaml entry cover: platform: rpi_gpio + relay_time: 0.2 + state_pull_mode: 'UP' covers: - relay_pin: 10 state_pin: 11 From 459001591138f67166131e4dec4cca8db0b0f775 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Sun, 18 Dec 2016 09:54:45 +0100 Subject: [PATCH 003/123] Add real-life example for turn_off script on wake-on-lan (#1535) * Update switch.wake_on_lan.markdown * Update switch.wake_on_lan.markdown Suggested recipe for using turn_off to suspend a linux computer. --- .../_components/switch.wake_on_lan.markdown | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/source/_components/switch.wake_on_lan.markdown b/source/_components/switch.wake_on_lan.markdown index 833102d5466..bc7e314ccb1 100644 --- a/source/_components/switch.wake_on_lan.markdown +++ b/source/_components/switch.wake_on_lan.markdown @@ -16,6 +16,7 @@ The `wake_on_lan` (WOL) switch platform allows you to turn on a [WOL](https://en

The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. The `turn_off` variable is there to help you call a script when you have figured out how to remotely turn off your computer. +See below for suggestions on how to do this.

To enable this switch in your installation, add the following to your `configuration.yaml` file: @@ -33,3 +34,31 @@ Configuration variables: - **name** (*Optional*): The name of the switch. Default is 'Wake on LAN'. - **host** (*Optional*): The IP address or hostname to check the state of the device (on/off). - **turn_off** (*Optional*): Defines an [action](/getting-started/automation/) to run when the switch is turned off. + +## {% linkable_title Examples %} + +Here are some real life examples of how to use the **turn_off** variable. + +### {% linkable_title Suspending linux %} +Suggested recipe for letting the turn_off script suspend a Linux computer (the **target**) +from Home Assistant running on another Linux computer (the **server**). + +1. On the **server**, log in as the user account Home Assistant is running under. (I'm using `hass` in this example) +2. On the **server**, create ssh keys by running `ssh-keygen`. Just press enter on all questions. +3. On the **target**, create a new account that Home Assistant can ssh into: `sudo adduser hass`. Just press enter on all questions except password. I recommend using the same user name as on the server. If you do, you can leave out `hass@` in the ssh commands below. +4. On the **server**, transfer your public ssh key by `ssh-copy-id hass@TARGET` where TARGET is your target machine's name or IP address. Enter the password you created in step 3. +5. On the **server**, verify that you can reach your target machine without password by `ssh TARGET`. +6. On the **target**, we need to let the hass user execute the program needed to suspend/shut down the target computer. I'm using `pm-suspend`, use `poweroff` to turn off the computer. First, get the full path: `which pm-suspend`. On my system, this is `/usr/sbin/pm-suspend`. +7. On the **target**, using an account with sudo access (typically your main account), `sudo visudo`. Add this line last in the file: `hass ALL=NOPASSWD:/usr/sbin/pm-suspend`, where you replace `hass` with the name of your user on the target, if different, and `/usr/sbin/pm-suspend` with the command of your choice, if different. +8. On the **server**, add the following to your configuration, replacing TARGET with the target's name: +``` yaml +switch: + - platform: wake_on_lan + name: "TARGET" + ... + turn_off: + service: shell_command.turn_off_TARGET + +shell_command: + turn_off_TARGET: 'ssh hass@TARGET sudo pm-suspend' +``` From 5d0390f97ec5d028b847c1b8b879224816d0a907 Mon Sep 17 00:00:00 2001 From: Nolan Gilley Date: Sun, 18 Dec 2016 03:55:43 -0500 Subject: [PATCH 004/123] show a template switch example for harmony (#1548) * show a template switch example * Update remote.harmony.markdown --- source/_components/remote.harmony.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_components/remote.harmony.markdown b/source/_components/remote.harmony.markdown index 9f07c44f070..e392dab25fc 100755 --- a/source/_components/remote.harmony.markdown +++ b/source/_components/remote.harmony.markdown @@ -60,6 +60,22 @@ Supported services: ### {% linkable_title Examples %} +A template switch can be used to display and control the state of an activity in the frontend. + +```yaml +switch: + - platform: template + switches: + tv: + value_template: "{% raw %}{% if is_state('remote.family_room', 'on') %}on{% else %}off{% endif %}{% endraw %}" + turn_on: + service: remote.turn_on + entity_id: remote.family_room + turn_off: + service: remote.turn_off + entity_id: remote.family_room +``` + Template sensors can be utilized to display current activity in the frontend. ```yaml From 6f25bc30f7572f15140700de92b43fd2f62b9072 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 18 Dec 2016 09:58:49 +0100 Subject: [PATCH 005/123] Split description of both platforms / added auto discovery feature for denonavr (#1582) --- .../_components/media_player.denon.markdown | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index a083e47ac5e..d579463a5ce 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -28,7 +28,7 @@ Supported devices: To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: -Telnet interface +**Telnet interface** ```yaml # Example configuration.yaml entry media_player: @@ -36,7 +36,20 @@ media_player: host: IP_ADDRESS ``` -denonavr interface +Configuration variables: + +- **host** (*Required*): IP address of the device. Example: 192.168.1.32 +- **name** (*Optional*): Name of the device. + +A few notes for platform: denon +- The receiver handles only one telnet connection and refuses others. +- Be careful with the volume. 100% or even 50% is very loud. +- To be able to wake up the receiver, activate the "remote" setting in the receiver's settings. +- Play and pause are supported, toggling is not possible. +- Seeking cannot be implemented as the UI sends absolute positions. Only seeking via simulated button presses is possible. + + +**denonavr interface** ```yaml # Example configuration.yaml entry media_player: @@ -46,15 +59,10 @@ media_player: Configuration variables: -- **host** (*Required*): IP address of the device. Example: 192.168.1.32 -- **name** (*Optional*): Name of the device +- **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto discovery is used. +- **name** (*Optional*): Name of the device. If not set, friendlyName of receiver is used. -A few notes: - -- The receiver handles only one telnet connection and refuses others. -- Be careful with the volume. 100% or even 50% is very loud. -- To be able to wake up the receiver, activate the "remote" setting in the receiver's settings. -- Play and pause are supported, toggling is not possible. -- Seeking cannot be implemented as the UI sends absolute positions. Only seeking via simulated button presses is possible. +A few notes for platform: denonavr - Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform -- denonavr platform supports some additional functionalities like album covers and is supporting more than simultaneous one connection +- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery +- Still be careful with the volume. 100% in an action movie will tear down your walls. From 733559db1797c7e71ac1a7c34e15ed1b7485f7b9 Mon Sep 17 00:00:00 2001 From: Andrew Cockburn Date: Sun, 18 Dec 2016 04:01:03 -0500 Subject: [PATCH 006/123] Add AppDaemon docs to ecosystem (#1589) --- source/_ecosystem/appdaemon.markdown | 14 + source/_ecosystem/appdaemon/api.markdown | 2110 +++++++++++++++++ .../appdaemon/configuration.markdown | 80 + .../appdaemon/example_apps.markdown | 14 + .../appdaemon/installation.markdown | 46 + .../_ecosystem/appdaemon/operation.markdown | 14 + source/_ecosystem/appdaemon/reboot.markdown | 14 + source/_ecosystem/appdaemon/running.markdown | 96 + source/_ecosystem/appdaemon/tutorial.markdown | 130 + source/_ecosystem/appdaemon/updating.markdown | 27 + source/_ecosystem/appdaemon/windows.markdown | 23 + .../ecosystem_appdaemon_navigation.html | 19 + .../asides/ecosystem_navigation.html | 2 + 13 files changed, 2589 insertions(+) create mode 100755 source/_ecosystem/appdaemon.markdown create mode 100755 source/_ecosystem/appdaemon/api.markdown create mode 100644 source/_ecosystem/appdaemon/configuration.markdown create mode 100644 source/_ecosystem/appdaemon/example_apps.markdown create mode 100644 source/_ecosystem/appdaemon/installation.markdown create mode 100644 source/_ecosystem/appdaemon/operation.markdown create mode 100644 source/_ecosystem/appdaemon/reboot.markdown create mode 100755 source/_ecosystem/appdaemon/running.markdown create mode 100755 source/_ecosystem/appdaemon/tutorial.markdown create mode 100644 source/_ecosystem/appdaemon/updating.markdown create mode 100755 source/_ecosystem/appdaemon/windows.markdown create mode 100755 source/_includes/asides/ecosystem_appdaemon_navigation.html diff --git a/source/_ecosystem/appdaemon.markdown b/source/_ecosystem/appdaemon.markdown new file mode 100755 index 00000000000..9ec0e87f8e3 --- /dev/null +++ b/source/_ecosystem/appdaemon.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "AppDaemon" +description: "AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant. \ No newline at end of file diff --git a/source/_ecosystem/appdaemon/api.markdown b/source/_ecosystem/appdaemon/api.markdown new file mode 100755 index 00000000000..63299c41948 --- /dev/null +++ b/source/_ecosystem/appdaemon/api.markdown @@ -0,0 +1,2110 @@ +--- +layout: page +title: "AppDaemon API Reference" +description: "AppDaemon API Reference" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +## Anatomy of an App + +Automations in AppDaemon are performed by creating a piece of code (essentially a Python Class) and then instantiating it as an Object one or more times by configuring it as an App in the configuration file. The App is given a chance to register itself for whatever events it wants to subscribe to, and AppDaemon will then make calls back into the Object's code when those events occur, allowing the App to respond to the event with some kind of action. + +The first step is to create a unique file within the apps directory (as defined in the `[AppDaemon]` section of configuration file). This file is in fact a Python module, and is expected to contain one or more classes derived from the supplied `AppDaemon` class, imported from the supplied `homeassistant.appapi` module. The start of an app might look like this: + +```python +import homeassistant.appapi as appapi + +class MotionLights(appapi.AppDaemon): +``` + +When configured as an app in the config file (more on that later) the lifecycle of the App begins. It will be instantiated as an object by AppDaemon, and immediately, it will have a call made to it's `initialize()` function - this function must appear as part of every app: + +```python + def initialize(self): +``` + +The initialize function allows the app to register any callbacks it might need for responding to state changes, and also any setup activities. When the `initialize()` function returns, the App will be dormant until any of it's callbacks are activated. + +There are several circumstances under which `initialize()` might be called: + +- Initial start of AppDaemon +- Following a change to the Class code +- Following a change to the module parameters +- Following initial configuration of an app +- Following a change in the status of Daylight Savings Time +- Following a restart of Home Assistant + +In every case, the App is responsible for recreating any state it might need as if it were the first time it was ever started. If `initialize()` is called, the app can safely assume that it is either being loaded for the first time, or that all callbacks and timers have been cancelled. In either case, the APP will need to recreate them. Depending upon the application it may be desirable for the App to establish state such as whether or not a particular light is on, within the `initialize()` function to ensure that everything is as expected or to make immediate remedial action (e.g. turn off a light that might have been left on by mistake when the app was restarted). + +After the `initialize()` function is in place, the rest of the app consists of functions that are called by the various callback mechanisms, and any additional functions the user wants to add as part of the program logic. Apps are able to subscribe to 2 main classes of events: + +- Scheduled Events +- State Change Events + +These, along with their various subscription calls and helper functions, will be described in detail in later sections. + +To wrap up this section, here is a complete functioning App (with comments): + +```python +import homeassistant.appapi as appapi +import datetime + +# Declare Class +class NightLight(appapi.AppDaemon): + #initialize() function which will be called at startup and reload + def initialize(self): + # Create a time object for 7pm + time = datetime.time(19, 00, 0) + # Schedule a daily callback that will call run_daily() at 7pm every night + self.run_daily(self.run_daily_callback, time) + + # Our callback function will be called by the scheduler every day at 7pm + def run_daily_callback(self, kwargs): + # Call to Home Assistant to turn the porch light on + self.turn_on("light.porch") +``` + +To summarize - an App's lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That's all there is to it! + +## About the API + +The implementation of the API is located in the AppDaemon class that Apps are derived from. The code for the functions is therefore available to the App simply by invoking the name of the function from the object namespace using the `self` keyword, as in the above examples. `self.turn_on()` for example is just a method defined in the parent class and made available to the child. This design decision was made to simplify some of the implementation and hide passing of unnecessary variables during the API invocation. + +## Configuration of Apps +Apps are configured by specifying new sections in the configuration file. `[AppDaemon]` is a reserved section, for configuration of AppDaemon itself. The name of the section is the name the App is referred to within the system in log files etc. and must be unique. + +To configure a new App you need a minimum of two directives: + +- `module` - the name of the module (without the `.py`) that contains the class to be used for this App +- `class` - the name of the class as defined within the module for the APPs code + +Although the section/App name must be unique, it is possible to re-use a class as many times as you want, and conversely to put as many classes in a module as you want. A sample definition for a new App might look as follows: + +```ini +[newapp] +module = new +class = NewApp +``` + +When AppDaemon sees the following configuration it will expect to find a class called `NewApp` defined in a module called `new.py` in the apps subdirectory. Apps can be placed at the root of the Apps directory or within a subdirectory, an arbitrary depth down - wherever the App is, as long as it is in some subdirectory of the Apps dir, or in the Apps dir itself, AppDaemon will find it. There is no need to include information about the path, just the name of the file itself (without the `.py`) is sufficient. If names in the subdirectories overlap, AppDir will pick one of them but the exact choice it will make is undefined. + +When starting the system for the first time or when reloading an App or Module, the system will log the fact in it's main log. It is often the case that there is a problem with the class, maybe a syntax error or some other problem. If that is the case, details will be output to the error log allowing the user to remedy the problem and reload. + +## Steps to writing an App + +1. Create the code in a new or shared module by deriving a class from AppDaemon, add required callbacks and code +2. Add the App to the configuration file +3. There is no number 3 + +## Reloading Modules and Classes + +Reloading of modules is automatic. When the system spots a change in a module, it will automatically reload and recompile the module. It will also figure out which Apps were using that Module and restart them, causing all of their existing callbacks to be cleared, and their `initialize()` function to be called. + +The same is true if changes are made to an App's configuration - changing the class, or arguments (see later) will cause that app to be reloaded in the same way. The system is also capable of detecting if a new app has been added, or if one has been removed, and it will act appropriately, starting the new app immediately and removing all callbacks for the removed app. + +The suggested order for creating a new App is to add the module code first and work until it compiles cleanly, and only then add an entry in the configuration file to actually run it. A good workflow is to continuously monitor the error file (using `tail -f` on Linux for instance) to ensure that errors are seen and can be remedied. + +## Passing Arguments to Apps + +There wouldn't be much point in being able to run multiple versions of an App if there wasn't some way to instruct them to do something different. For this reason it is possible to pass any required arguments to an App, which are then made available to the object at runtime. The arguments themselves can be called anything (apart from `module` or `class`) and are simply added into the section after the 2 mandatory directives like so: + +```ini +[MyApp] +module = myapp +class = MyApp +param1 = spam +param2 = eggs +``` + +Within the Apps code, the 2 parameters (as well as the module and class) are available as a dictionary called `args`, and accessed as follows: + +```python +param1 = self.args["param1"] +param2 = self.args["param2"] +``` + +A use case for this might be an App that detects motion and turns on a light. If you have 3 places you want to run this, rather than hardcoding this into 3 separate Apps, you need only code a single app and instantiate it 3 times with different arguments. It might look something like this: + +```ini +[downstairs_motion_light] +module = motion_light +class = MotionLight +sensor = binary_sensor.downstairs_hall +light = light.downstairs_hall +[upstairs_motion_light] +module = motion_light +class = MotionLight +sensor = binary_sensor.upstairs_hall +light = light.upstairs_hall +[garage_motion_light] +module = motion_light +class = MotionLight +sensor = binary_sensor.garage +light = light.garage +``` + +## Callback Constraints + +Callback constraints are a feature of AppDaemon that removes the need for repetition of some common coding checks. Many Apps will wish to process their callbacks only when certain conditions are met, e.g. someone is home, and it's after sunset. These kinds of conditions crop up a lot, and use of callback constraints can significantly simplify the logic required within callbacks. + +Put simply, callback constraints are one or more conditions on callback execution that can be applied to an individual App. An App's callbacks will only be executed if all of the constraints are met. If a constraint is absent it will not be checked for. + +For example, the presence callback constraint can be added to an App by adding a parameter to it's configuration like this: + +```ini +[some_app] +module = some_module +class = SomeClass +constrain_presence = noone +``` + +Now, although the `initialize()` function will be called for MyClass, and it will have a chance to register as many callbacks as it desires, none of the callbacks will execute, in this case, until everyone has left. This could be useful for an interior motion detector App for instance. There are several different types of constraints: + +- input_boolean +- input_select +- presence +- time + +An App can have as many or as few as are required. When more than one constraint is present, they must all evaluate to true to allow the callbacks to be called. Constraints becoming true are not an event in their own right, but if they are all true at a point in time, the next callback that would otherwise been blocked due to constraint failure will now be called. Similarly, if one of the constraints becomes false, the next callback that would otherwise have been called will be blocked. + +They are described individually below. + +### input_boolean +By default, the input_boolean constraint prevents callbacks unless the specified input_boolean is set to "on". This is useful to allow certain Apps to be turned on and off from the user interface. For example: + +```ini +[some_app] +module = some_module +class = SomeClass +constrain_input_boolean = input_boolean.enable_motion_detection +``` + +If you want to reverse the logic so the constraint is only called when the input_boolean is off, use the optional state parameter by appending ",off" to the argument, e.g.: + +```ini +[some_app] +module = some_module +class = SomeClass +constrain_input_boolean = input_boolean.enable_motion_detection,off +``` + +### input_select +The input_select constraint prevents callbacks unless the specified input_select is set to one or more of the nominated (comma separated) values. This is useful to allow certain Apps to be turned on and off according to some flag, e.g. a house mode flag. + +```ini +# Single value +constrain_input_select = input_select.house_mode,Day +# or multiple values +constrain_input_select = input_select.house_mode,Day,Evening,Night +``` + +### presence +The presence constraint will constrain based on presence of device trackers. It takes 3 possible values: +- `noone` - only allow callback execution when no one is home +- `anyone` - only allow callback execution when one or more person is home +- `everyone` - only allow callback execution when everyone is home + +```ini +constrain_presence = anyone +# or +constrain_presence = someone +# or +constrain_presence = noone +``` + +### time +The time constraint consists of 2 variables, `constrain_start_time` and `constrain_end_time`. Callbacks will only be executed if the current time is between the start and end times. +- If both are absent no time constraint will exist +- If only start is present, end will default to 1 second before midnight +- If only end is present, start will default to midnight + +The times are specified in a string format with one of the following formats: +- HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. +- `sunrise`|`sunset` [+|- HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds + +The time based constraint system correctly interprets start and end times that span midnight. + +```ini +# Run between 8am and 10pm +constrain_start_time = 08:00:00 +constrain_end_time = 22:00:00 +# Run between sunrise and sunset +constrain_start_time = sunrise +constrain_end_time = sunset +# Run between 45 minutes before sunset and 45 minutes after sunrise the next day +constrain_start_time = sunset - 00:45:00 +constrain_end_time = sunrise + 00:45:00 +``` + +### days +The day constraint consists of as list of days for which the callbacks will fire, e.g. + +```ini +constrain_days = mon,tue,wed +``` + +Callback constraints can also be applied to individual callbacks within Apps, see later for more details. + +## A Note on Threading + +AppDaemon is multithreaded. This means that any time code within an App is executed, it is executed by one of many threads. This is generally not a particularly important consideration for this application; in general, the execution time of callbacks is expected to be far quicker than the frequency of events causing them. However, it should be noted for completeness, that it is certainly possible for different pieces of code within the App to be executed concurrently, so some care may be necessary if different callback for instance inspect and change shared variables. This is a fairly standard caveat with concurrent programming, and if you know enough to want to do this, then you should know enough to put appropriate safeguards in place. For the average user however this shouldn't be an issue. If there are sufficient use cases to warrant it, I will consider adding locking to the function invocations to make the entire infrastructure threadsafe, but I am not convinced that it is necessary. + +An additional caveat of a threaded worker pool environment is that it is the expectation that none of the callbacks tie threads up for a significant amount of time. To do so would eventually lead to thread exhaustion, which would make the system run behind events. No events would be lost as they would be queued, but callbacks would be delayed which is a bad thing. + +Given the above, NEVER use Python's `time.sleep()` if you want to perform an operation some time in the future, as this will tie up a thread for the period of the sleep. Instead use the scheduler's `run_in()` function which will allow you to delay without blocking any threads. + +## State Operations + +### A note on Home Assistant State + +State within Home Assistant is stored as a collection of dictionaries, one for each entity. Each entity's dictionary will have some common fields and a number of entity type specific fields The state for an entity will always have the attributes: + +- `last_updated` +- `last_changed` +- `state` + +Any other attributes such as brightness for a lamp will only be present if the entity supports them, and will be stored in a sub-dictionary called `attributes`. When specifying these optional attributes in the `get_state()` call, no special distinction is required between the main attributes and the optional ones - `get_state()` will figure it out for you. + +Also bear in mind that some attributes such as brightness for a light, will not be present when the light is off. + +In most cases, the attribute `state` has the most important value in it, e.g. for a light or switch this will be `on` or `off`, for a sensor it will be the value of that sensor. Many of the AppDaemon API calls and callbacks will implicitly return the value of state unless told to do otherwise. + +### get_state() + +#### Synopsis + +```python +get_state(entity = None, attribute = None) +``` + +`get_state()` is used to query the state of any component within Home Assistant. State updates are continuously tracked so this call runs locally and does not require AppDaemon to call back to Home Assistant and as such is very efficient. + +#### Returns + +`get_state()` returns a `dictionary` or single value, the structure of which varies according to the parameters used. + +#### Parameters + +All parameters are optional, and if `get_state()` is called with no parameters it will return the entire state of Home Assistant at that given time. This will consist of a dictionary with a key for each entity. Under that key will be the standard entity state information. + +##### entity + +This is the name of an entity or device type. If just a device type is provided, e.g. `light` or `binary_sensor`, `get_state()` will return a dictionary of all devices of that type, indexed by the entity_id, containing all the state for each entity. + +If a fully qualified `entity_id` is provided, `get_state()` will return the state attribute for that entity, e.g. `on` or `off` for a light. + +##### attribute + +Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified `entity_id`, a single value representing the attribute will be returned, or `None` if it is not present. + +The value `all` for attribute has special significance and will return the entire state dictionary for the specified entity rather than an individual attribute value. + +#### Examples + +```python +# Return state for the entire system +state = self.get_state() + +# Return state for all switches in the system +state = self.get_state("switch") + +# Return the state attribute for light.office_1 +state = self.get_state("light.office_1") + +# Return the brightness attribute for light.office_1 +state = self.get_state("light.office_1", "brightness") + +# Return the entire state for light.office_1 +state = self.get_state("light.office_1", "all") +``` + +### set_state() + +`set_state()` will make a call back to Home Assistant and make changes to the internal state of Home Assistant. This is not something that you would usually want to do and the applications are limited however the call is included for completeness. Note that for instance, setting the state of a light to `on` won't actually switch the device on, it will merely change the state of the device in Home Assistant so that it no longer reflects reality. In most cases, the state will be corrected the next time Home Assistant polls the device or someone causes a state change manually. To effect actual changes of devices use one of the service call functions. + +One possible use case for `set_state()` is for testing. If for instance you are writing an App to turn on a light when it gets dark according to a luminance sensor, you can use `set_state()` to temporarily change the light level reported by the sensor to test your program. However this is also possible using the developer tools. + +At the time of writing, it appears that no checking is done as to whether or not the entity exists, so it is possible to add entirely new entries to Home Assistant's state with this call. + +#### Synopsis + +```python +set_state(entity_id, **kwargs) +``` + +#### Returns + +`set_state()` returns a dictionary representing the state of the device after the call has completed. + +#### Parameters + +##### entity_id + +Entity id for which the state is to be set, e.g. `light.office_1`. + +##### values + +A list of keyword values to be changed or added to the entities state. e.g. `state = "off"`. Note that any optional attributes such as colors for bulbs etc, need to reside in a dictionary called `attributes`; see the example. + +#### Examples + +```python +status = self.set_state("light.office_1", state = "on", attributes = {"color_name": "red"}) +``` + +### About Callbacks + +A large proportion of home automation revolves around waiting for something to happen and then reacting to it; a light level drops, the sun rises, a door opens etc. Home Assistant keeps track of every state change that occurs within the system and streams that information to AppDaemon almost immediately. + +An individual App however usually doesn't care about the majority of state changes going on in the system; Apps usually care about something very specific, like a specific sensor or light. Apps need a way to be notified when a state change happens that they care about, and be able to ignore the rest. They do this through registering callbacks. A callback allows the App to describe exactly what it is interested in, and tells AppDaemon to make a call into its code in a specific place to be able to react to it - this is a very familiar concept to anyone familiar with event-based programming. + +There are 3 types of callbacks within AppDaemon: + +- State Callbacks - react to a change in state +- Scheduler Callbacks - react to a specific time or interval +- Event Callbacks - react to specific Home Assistant and Appdaemon events. + +All callbacks allow the user to specify additional parameters to be handed to the callback via the standard Python `**kwargs` mechanism for greater flexibility. + +### About Registering Callbacks + +Each of the various types of callback have their own function or functions for registering the callback: + +- `listen_state()` for state callbacks +- Various scheduler calls such as `run_once()` for scheduler callbacks +- `listen_event()` for event callbacks. + +Each type of callback shares a number of common mechanisms that increase flexibility. + +#### Callback Level Constraints + +When registering a callback, you can add constraints identical to the Application level constraints described earlier. The difference is that a constraint applied to an individual callback only affects that callback and no other. The constraints are applied by adding Python keyword-value style arguments after the positional arguments. The parameters themselves are named identically to the previously described constraints and have identical functionality. For instance, adding: + +`constrain_presence="everyone"` + +to a callback registration will ensure that the callback is only run if the callback conditions are met and in addition everyone is present although any other callbacks might run whenever their event fires if they have no constraints. + +For example: + +`self.listen_state(self.motion, "binary_sensor.drive", constrain_presence="everyone")` + +#### User Arguments + +Any callback has the ability to allow the App creator to pass through arbitrary keyword arguments that will be presented to the callback when it is run. The arguments are added after the positional parameters just like the constraints. The only restriction is that they cannot be the same as any constraint name for obvious reasons. For example, to pass the parameter `arg1 = "home assistant"` through to a callback you would register a callback as follows: + +`self.listen_state(self.motion, "binary_sensor.drive", arg1="home assistant")` + +Then in the callback you could use it as follows: + +```python +def motion(self, entity, attribute, old, new, **kwargs): + self.log("Arg1 is {}".format(kwargs["arg1"])) +``` + +### State Callbacks + +AppDaemons's state callbacks allow an App to listen to a wide variety of events, from every state change in the system, right down to a change of a single attribute of a particular entity. Setting up a callback is done using a single API call `listen_state()` which takes various arguments to allow it to do all of the above. Apps can register as many or as few callbacks as they want. + +### About State Callback Functions + +When calling back into the App, the App must provide a class function with a known signature for AppDaemon to call. The callback will provide various information to the function to enable the function to respond appropriately. For state callbacks, a class defined callback function should look like this: + +```python + def my_callback(self, entity, attribute, old, new, **kwargs): + +``` + +You can call the function whatever you like - you will reference it in the `listen_state()` call, and you can create as many callback functions as you need. + +The parameters have the following meanings: + +#### self + +A standard Python object reference. + +#### entity + +Name of the entity the callback was requested for or `None`. + +#### attribute + +Name of the attribute the callback was requested for or `None`. + +#### old + +The value of the state before the state change. + +#### new + +The value of the state after the state change. + +`old` and `new` will have varying types depending on the type of callback. + +#### \*\*kwargs + +A dictionary containing any constraints and/or additional user specific keyword arguments supplied to the `listen_state()` call. + +### listen_state() + +`listen_state()` allows the user to register a callback for a wide variety of state changes. + +#### Synopsis + +```python +handle = listen_state(callback, entity = None, **kwargs) +``` + +#### Returns + +A unique identifier that can be used to cancel the callback if required. Since variables created within object methods are local to the function they are created in, and in all likelihood the cancellation will be invoked later in a different function, it is recommended that handles are stored in the object namespace, e.g. `self.handle`. + +#### Parameters + +All parameters except `callback` are optional, and if `listen_state()` is called with no additional parameters it will subscribe to any state change within Home Assistant. + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard State Callback format documented above. + +##### entity + +This is the name of an entity or device type. If just a device type is provided, e.g. `light` or `binary_sensor`, `listen_state()` will subscribe to state changes of all devices of that type. If a fully qualified `entity_id` is provided, `listen_state()` will listen for state changes for just that entity. + +When called, AppDaemon will supply the callback function, in old and new, with the state attribute for that entity, e.g. `on` or `off` for a light. + +##### attribute (optional) + +Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified `entity_id`, `listen_state()` will subscribe to changes for just that attribute within that specific entity. The new and old parameters in the callback function will be provided with a single value representing the attribute. + +The value `all` for attribute has special significance and will listen for any state change within the specified entity, and supply the callback functions with the entire state dictionary for the specified entity rather than an individual attribute value. + +##### new = (optional) + +If `new` is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually `state`) in the new state match the value of `new`. + +##### old = (optional) + +If `old` is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually `state`) in the old state match the value of `old`. + +Note: `old` and `new` can be used singly or together. + +##### duration = (optional) + +If duration is supplied as a parameter, the callback will not fire unless the state listened for is maintained for that number of seconds. This makes the most sense if a specific attribute is specified (or the default os `state` is used), an in conjunction with the `old` or `new` parameters, or both. When the callback is called, it is supplied with the values of `entity`, `attr`, `old` and `new` that were current at the time the actual event occured, since the assumption is that none of them have changed in the intervening period. + +```python + def my_callback(self, **kwargs): + +``` + +(Scheduler callbacks are documented in detail laer in this document) + +##### \*\*kwargs + +Zero or more keyword arguments that will be supplied to the callback when it is called. + +#### Examples + +```python +# Listen for any state change and return the state attribute +self.handle = self.listen_state(self.my_callback) + +# Listen for any state change involving a light and return the state attribute +self.handle = self.listen_state(self.my_callback, "light") + +# Listen for a state change involving light.office1 and return the state attribute +self.handle = self.listen_state(self.my_callback, "light.office_1") + +# Listen for a state change involving light.office1 and return the entire state as a dict +self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "all") + +# Listen for a state change involving the brightness attribute of light.office1 +self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "brightness") + +# Listen for a state change involving light.office1 turning on and return the state attribute +self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on") + +# Listen for a state change involving light.office1 changing from brightness 100 to 200 and return the state attribute +self.handle = self.listen_state(self.my_callback, "light.office_1", old = "100", new = "200") + +# Listen for a state change involving light.office1 changing to state on and remaining on for a minute +self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on", duration = 60) + +``` + + +### cancel_listen_state() + +Cancel a `listen_state()` callback. This will mean that the App will no longer be notified for the specific state change that has been cancelled. Other state changes will continue to be monitored. + +#### Synopsis + +```python +cancel_listen_state(handle) +``` + +#### Returns + +Nothing + +#### Parameters + +##### handle + +The handle returned when the `listen_state()` call was made. + +#### Examples + +```python +self.cancel_listen_state(self.office_light_handle) +``` + +### info_listen_state() + +Get information on state a callback from it's handle. + +#### Synopsis + +```python +entity, attribute, kwargs = self.info_listen_state(self.handle) +``` + +#### Returns + +entity, attribute, kwargs - the values supplied when the callback was initially created. + +#### Parameters + +##### handle + +The handle returned when the `listen_state()` call was made. + +#### Examples + +```python +entity, attribute, kwargs = self.info_listen_state(self.handle) +``` + +## Scheduler + +AppDaemon contains a powerful scheduler that is able to run with 1 second resolution to fire off specific events at set times, or after set delays, or even relative to sunrise and sunset. In general, events should be fired less than a second after specified but under certain circumstances there may be short additional delays. + +### About Schedule Callbacks + +As with State Change callbacks, Scheduler Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: + +```python + def my_callback(self, **kwargs): + +``` + +You can call the function whatever you like; you will reference it in the Scheduler call, and you can create as many callback functions as you need. + +The parameters have the following meanings: + +#### self +A standard Python object reference + +#### \*\*kwargs + +A dictionary containing Zero or more keyword arguments to be supplied to the callback. + +### Creation of Scheduler Callbacks + +Scheduler callbacks are created through use of a number of convenience functions which can be used to suit the situation. + +#### run_in() + +Run the callback in a defined number of seconds. This is used to add a delay, for instance a 60 second delay before a light is turned off after it has been triggered by a motion detector. This callback should always be used instead of `time.sleep()` as discussed previously. + +#### Synopsis + +```python +self.handle = self.run_in(callback, delay, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### delay + +Delay, in seconds before the callback is invoked. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +self.handle = self.run_in(self.run_in_c) +self.handle = self.run_in(self.run_in_c, title = "run_in5") +``` +#### run_once() + +Run the callback once, at the specified time of day. If the time of day is in the past, the callback will occur on the next day. + +#### Synopsis + +```python +self.handle = self.run_once(callback, time, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### time + +A Python `time` object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Run at 4pm today, or 4pm tomorrow if it is already after 4pm +import datetime +... +runtime = datetime.time(16, 0, 0) +handle = self.run_once(self.run_once_c, runtime) +``` + +#### run_at() + +Run the callback once, at the specified date and time. + +#### Synopsis + +```python +self.handle = self.run_at(callback, datetime, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. `run_at()` will raise an exception if the specified time is in the past. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### datetime + +A Python `datetime` object that specifies when the callback will occur. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Run at 4pm today +import datetime +... +runtime = datetime.time(16, 0, 0) +today = datetime.date.today() +event = datetime.datetime.combine(today, runtime) +handle = self.run_once(self.run_once_c, event) +``` +#### run_daily() + +Execute a callback at the same time every day. If the time has already passed, the function will not be invoked until the following day at the specified time. + +#### Synopsis + +```python +self.handle = self.run_daily(callback, time, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### time + +A Python `time` object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Run daily at 7pm +import datetime +... +time = datetime.time(19, 0, 0) +self.run_daily(self.run_daily_c, runtime) +``` + +#### run_hourly() + +Execute a callback at the same time every hour. If the time has already passed, the function will not be invoked until the following hour at the specified time. + +#### Synopsis + +```python +self.handle = self.run_hourly(callback, time = None, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### time + +A Python `time` object that specifies when the callback will occur, the hour component of the time object is ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start an hour from the time that `run_hourly()` was executed. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Run every hour, on the hour +import datetime +... +time = datetime.time(0, 0, 0) +self.run_daily(self.run_daily_c, runtime) +``` +#### run_minutely() + +Execute a callback at the same time every minute. If the time has already passed, the function will not be invoked until the following minute at the specified time. + +#### Synopsis + +```python +self.handle = self.run_minutely(callback, time = None, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### time + +A Python `time` object that specifies when the callback will occur, the hour and minute components of the time object are ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start a minute from the time that `run_minutely()` was executed. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Run Every Minute on the minute +import datetime +... +time = datetime.time(0, 0, 0) +self.run_minutely(self.run_minutely_c, time) +``` + +#### run_every() + +Execute a repeating callback with a configurable delay starting at a specific time. + +#### Synopsis + +```python +self.handle = self.run_every(callback, time, repeat, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### time + +A Python `time` object that specifies when the initial callback will occur. + +##### repeat + +After the initial callback has occurred, another will occur every `repeat` seconds. + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Run every 17 minutes starting in 2 hours time +import datetime +... +self.run_every(self.run_every_c, time, 17 * 60) +``` + +#### cancel_timer() +Cancel a previously created timer + +#### Synopsis + +```python +self.cancel_timer(handle) +``` + +#### Returns + +None + +#### Parameters + +##### handle + +A handle value returned from the original call to create the timer. + +#### Examples + +```python +self.cancel_timer(handle) +``` + +### info_timer() + +Get information on a scheduler event from it's handle. + +#### Synopsis + +```python +time, interval, kwargs = self.info_timer(handle) +``` + +#### Returns + +time - datetime object representing the next time the callback will be fired + +interval - repeat interval if applicable, `0` otherwise. + +kwargs - the values supplied when the callback was initially created. + +#### Parameters + +##### handle + +The handle returned when the scheduler call was made. + +#### Examples + +```python +time, interval, kwargs = self.info_timer(handle) +``` + + + +### Scheduler Ransomization + +All of the scheduler calls above support 2 additional optional arguments, `random_start` and `random_end`. Using these arguments it is possible to randomize the firing of callbacks to the degree desired by setting the appropriate number of seconds with the parameters. + +- `random_start` - start of range of the random time +- `random_end` - end of range of the random time + +`random_start` must always be numerically lower than `random_end`, they can be negative to denote a random offset before and event, or positive to denote a random offset after an event. The event would be a an absolute or relative time or sunrise/sunset depending on whcih scheduler call you use and these values affect the base time by the spcified amount. If not specified, they will default to `0`. + +For example: + +```python +# Run a callback in 2 minutes minus a random number of seconds between 0 and 60, e.g. run between 60 and 120 seconds from now +self.handle = self.run_in(callback, 120, random_start = -60, **kwargs) +# Run a callback in 2 minutes plus a random number of seconds between 0 and 60, e.g. run between 120 and 180 seconds from now +self.handle = self.run_in(callback, 120, random_end = 60, **kwargs) +# Run a callback in 2 minutes plus or minus a random number of seconds between 0 and 60, e.g. run between 60 and 180 seconds from now +self.handle = self.run_in(callback, 120, random_start = -60, random_end = 60, **kwargs) +``` + +## Sunrise and Sunset + +AppDaemon has a number of features to allow easy tracking of sunrise and sunset as well as a couple of scheduler functions. Note that the scheduler functions also support the randomization parameters described above, but they cannot be used in conjunction with the `offset` parameter`. + +### run_at_sunrise() + +Run a callback at or around sunrise. + +#### Synopsis + +```python +self.handle = self.run_at_sunrise(callback, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### offset = + +The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with `random_start` or `random_end` + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +import datetime +... +# Run 45 minutes before sunset +self.run_at_sunrise(self.sun, offset = datetime.timedelta(minutes = -45).total_seconds(), "Sunrise -45 mins") +# or you can just do the math yourself +self.run_at_sunrise(self.sun, offset = 30 * 60, "Sunrise +30 mins") +# Run at a random time +/- 60 minutes from sunrise +self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 60*60, "Sunrise, random +/- 60 mins") +# Run at a random time between 30 and 60 minutes before sunrise +self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 30*60, "Sunrise, random - 30 - 60 mins") +``` + +### run_at_sunset() + +Run a callback at or around sunset. + +#### Synopsis + +```python +self.handle = self.run_at_sunset(callback, offset, **kwargs) +``` + +#### Returns + +A handle that can be used to cancel the timer. + +#### Parameters + +##### callback + +Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. + +##### offset = + +The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with `random_start` or `random_end` + +##### \*\*kwargs + +Arbitary keyword parameters to be provided to the callback function when it is invoked. + +#### Examples + +```python +# Example using timedelta +import datetime +... +self.run_at_sunset(self.sun, datetime.timedelta(minutes = -45).total_seconds(), "Sunset -45 mins") +# or you can just do the math yourself +self.run_at_sunset(self.sun, 30 * 60, "Sunset +30 mins") +# Run at a random time +/- 60 minutes from sunset +self.run_at_sunset(self.sun, random_start = -60*60, random_end = 60*60, "Sunset, random +/- 60 mins") +# Run at a random time between 30 and 60 minutes before sunset +self.run_at_sunset(self.sun, random_start = -60*60, random_end = 30*60, "Sunset, random - 30 - 60 mins") +``` +### sunrise() + +Return the time that the next Sunrise will occur. + +#### Synopsis + +```python +self.sunrise() +``` + +#### Returns + +A Python datetime that represents the next time Sunrise will occur. + +#### Examples + +```python +rise_time = self.sunrise() +``` +### sunset() + +Return the time that the next Sunset will occur. + +#### Synopsis + +```python +self.sunset() +``` + +#### Returns + +A Python datetime that represents the next time Sunset will occur. + +#### Examples + +```python +set_time = self.sunset() +``` +### sun_up() + +A function that allows you to determine if the sun is currently up. + +#### Synopsis + +```python +result = self.sun_up() +``` + +#### Returns + +`True` if the sun is up, False otherwise. + +#### Examples + +```python +if self.sun_up(): + do something +``` + +### sun_down() + +A function that allows you to determine if the sun is currently down. + +#### Synopsis + +```python +result = self.sun_down() +``` + +#### Returns + +`True` if the sun is down, False otherwise. + +#### Examples + +```python +if self.sun_down(): + do something +``` +## Calling Services + +### About Services + +Services within Home Assistant are how changes are made to the system and its devices. Services can be used to turn lights on and off, set thermostats and a whole number of other things. Home Assistant supplies a single interface to all these disparate services that take arbitrary parameters. AppDaemon provides the `call_service()` function to call into Home Assistant and run a service. In addition, it also provides convenience functions for some of the more common services making calling them a little easier. + +### call_service() + +Call service is the basic way of calling a service within AppDaemon. It can call any service and provide any required parameters. Available services can be found using the developer tools in the UI. For listed services, the part before the first period is the domain, and the part after is the service name. For instance, `light.turn_on` has a domain of `light` and a service name of `turn_on`. + +#### Synopsis + +```python +self.call_service(self, service, **kwargs) +``` + +#### Returns + +None + +#### Parameters + +##### service + +The service name, e.g. `light.turn_on`. + +##### \*\*kwargs + +Each service has different parameter requirements. This argument allows you to specify a comma separated list of keyword value pairs, e.g. `entity_id = light.office_1`. These parameters will be different for every service and can be discovered using the developer tools. Most if not all service calls require an `entity_id` however, so use of the above example is very common with this call. + +#### Examples + +```python +self.call_service("light.turn_on", entity_id = "light/office_lamp", color_name = "red") +self.call_service("notify/notify", title = "Hello", message = "Hello World") +``` +### turn_on() + +This is a convenience function for the `homassistant.turn_on` function. It is able to turn on pretty much anything in Home Assistant that can be turned on or run: + +- Lights +- Switches +- Scenes +- Scripts + +And many more. + +#### Synopsis + +```python +self.turn_on(entity_id, **kwargs) +``` + +#### Returns + +None + +#### Parameters + +##### entity_id + +Fully qualified entity_id of the thing to be turned on, e.g. `light.office_lamp` or ```scene.downstairs_on``` + +##### \*\*kwargs + +A comma separated list of key value pairs to allow specification of parameters over and above `entity_id`. + +#### Examples + +```python +self.turn_on("switch.patio_lights") +self.turn_on("scene.bedrrom_on") +self.turn_on("light.office_1", color_name = "green") +``` + +### turn_off() + +This is a convenience function for the `homassistant.turn_off` function. Like `homeassistant.turn_on`, it is able to turn off pretty much anything in Home Assistant that can be turned off. + +#### Synopsis + +```python +self.turn_off(entity_id) +``` + +#### Returns + +None + +#### Parameters + +##### entity_id + +Fully qualified entity_id of the thing to be turned off, e.g. `light.office_lamp` or `scene.downstairs_on`. + +#### Examples + +```python +self.turn_off("switch.patio_lights") +self.turn_off("light.office_1") +``` + +### toggle() + +This is a convenience function for the `homassistant.toggle` function. It is able to flip the state of pretty much anything in Home Assistant that can be turned on or off. + +#### Synopsis + +```python +self.toggle(entity_id) +``` + +#### Returns + +None + +#### Parameters + +##### entity_id + +Fully qualified entity_id of the thing to be toggled, e.g. `light.office_lamp` or `scene.downstairs_on`. + +#### Examples + +```python +self.toggle("switch.patio_lights") +self.toggle("light.office_1", color_name = "green") +``` + +### select_value() + +This is a convenience function for the `input_slider.select_value` function. It is able to set the value of an input_slider in Home Assistant. + +#### Synopsis + +```python +self.select_value(entity_id, value) +``` + +#### Returns + +None + +#### Parameters + +##### entity_id + +Fully qualified entity_id of the input_slider to be changed, e.g. `input_slider.alarm_hour`. + +##### value + +The new value to set the input slider to. + +#### Examples + +```python +self.select_value("input_slider.alarm_hour", 6) +``` + +### select_option() + +This is a convenience function for the `input_select.select_option` function. It is able to set the value of an input_select in Home Assistant. + +#### Synopsis + +```python +self.select_option(entity_id, option) +``` + +#### Returns + +None + +#### Parameters + +##### entity_id + +Fully qualified entity_id of the input_select to be changed, e.g. `input_select.mode`. + +##### value + +The new value to set the input slider to. + +#### Examples + +```python +self.select_option("input_select.mode", "Day") +``` + +### notify() + +This is a convenience function for the `notify.notify` service. It will send a notification to your defualt notification service. If you have more than one, use `call_service()` to call the specific notification service you require instead. + +#### Synopsis + +```python +notify(message, title=None) +``` +#### Returns + +None + +#### Parameters + +##### message + +Message to be sent to the notification service. + +##### title + +Title of the notification - optional. + +#### Examples + +```python +self.notify("", "Switching mode to Evening") +``` + +## Events + +### About Events + +Events are a fundamental part of how Home Assistant works under the covers. HA has an event bus that all components can read and write to, enabling components to inform other components when important events take place. We have already seen how state changes can be propagated to AppDaemon - a state change however is merely an example of an event within Home Assistant. There are several other event types, among them are: + +- `homeassistant_start` +- `homeassistant_stop` +- `state_changed` +- `service_registered` +- `call_service` +- `service_executed` +- `platform_discovered` +- `component_loaded` + +Using AppDaemon, it is possible to subscribe to specific events as well as fire off events. + +In addition to the Home Assistant supplied events, AppDaemon adds 2 more events. These are internal to AppDaemon and are not visible on the Home Assistant bus: + +- `appd_started` - fired once when AppDaemon is first started and after Apps are initialized +- `ha_started` - fired every time AppDaemon detects a Home Assistant restart + +### About Event Callbacks + +As with State Change and Scheduler callbacks, Event Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: + +```python + def my_callback(self, event_name, data, kwargs): + +``` + +You can call the function whatever you like - you will reference it in the Scheduler call, and you can create as many callback functions as you need. + +The parameters have the following meanings: + +#### self + +A standard Python object reference. + +#### event_name + +Name of the event that was called, e.g. `call_service`. + +#### data + +Any data that the system supplied with the event as a dict. + +#### kwargs + +A dictionary containing Zero or more user keyword arguments to be supplied to the callback. + +### listen_event() + +Listen event sets up a callback for a specific event, or any event. + +#### Synopsis + +```python +handle = listen_event(function, event = None, **kwargs): +``` +#### Returns + +A handle that can be used to cancel the callback. + +#### Parameters + +##### function + +The function to be called when the event is fired. + +##### event + +Name of the event to subscribe to. Can be a standard Home Assistant event such as `service_registered` or an arbitrary custom event such as `"MODE_CHANGE"`. If no event is specified, `listen_event()` will subscribe to all events. + +##### \*\*kwargs (optional) + +One or more keyword value pairs representing App specific parameters to supply to the callback. If the keywords match values within the event data, they will act as filters, meaning that if they don't match the values, the callback will not fire. + +As an example of this, a Minimote controller when activated will generate an event called `zwave.scene_activated`, along with 2 pieces of data that are specific to the event - `entity_id` and `scene`. If you include keyword values for either of those, the values supplied to the `listen_event()1 call must match the values in the event or it will not fire. If the keywords do not match any of the data in the event they are simply ignored. + +Filtering will work with any event type, but it will be necessary to figure out the data associated with the event to understand what values can be filtered on. This can be achieved by examining Home Assistant's logfiles when the event fires. + +#### Examples +```python +self.listen_event(self.mode_event, "MODE_CHANGE") +# Listen for a minimote event activating scene 3: +self.listen_event(self.generic_event, "zwave.scene_activated", scene_id = 3) +# Listen for a minimote event activating scene 3 from a specific minimote: +self.listen_event(self.generic_event, "zwave.scene_activated", entity_id = "minimote_31", scene_id = 3) +``` + +### cancel_listen_event() + +Cancels callbacks for a specific event. + +#### Synopsis + +```python +cancel_listen_event(handle) +``` +#### Returns + +None. + +#### Parameters + +##### handle + +A handle returned from a previous call to `listen_event()`. + +#### Examples + +```python +self.cancel_listen_event(handle) +``` + +### info_listen_event() + +Get information on an event callback from it's handle. + +#### Synopsis + +```python +service, kwargs = self.info_listen_event(handle) +``` + +#### Returns + +service, kwargs - the values supplied when the callback was initially created. + +#### Parameters + +##### handle + +The handle returned when the `listen_event()` call was made. + +#### Examples + +```python +service, kwargs = self.info_listen_event(handle) +``` + + +### fire_event() + +Fire an event on the HomeAssistant bus, for other components to hear. + +#### Synopsis + +```python +fire_event(event, **kwargs) +``` + +#### Returns + +None. + +#### Parameters + +##### event + +Name of the event. Can be a standard Home Assistant event such as `service_registered` or an arbitrary custom event such as `"MODE_CHANGE"`. + +##### \*\*kwargs + +Zero or more keyword arguments that will be supplied as part of the event. + +#### Examples + +```python +self.fire_event("MY_CUSTOM_EVENT", jam="true") +``` + +### Event Callback Function Signature + +Functions called as an event callback will be supplied with 2 arguments: + +```python +def service(self, event_name, data): +``` + +#### event_name + +The name of the event that caused the callback, e.g. `"MODE_CHANGE"` or `call_service`. + +#### data + +A dictionary containing any additional information associated with the event. + +### Use of Events for Signalling between Home Assistant and AppDaemon + +Home Assistant allows for the creation of custom events and existing components can send and receive them. This provides a useful mechanism for signaling back and forth between Home Assistant and AppDaemon. For instance, if you would like to create a UI Element to fire off some code in Home Assistant, all that is necessary is to create a script to fire a custom event, then subscribe to that event in AppDaemon. The script would look something like this: + +```yaml +alias: Day +sequence: +- event: MODE_CHANGE + event_data: + mode: Day +``` + +The custom event `MODE_CHANGE` would be subscribed to with: + +```python +self.listen_event(self.mode_event, "MODE_CHANGE") +``` + +Home Assistant can send these events in a variety of other places - within automations, and also directly from Alexa intents. Home Assistant can also listen for custom events with it's automation component. This can be used to signal from AppDaemon code back to home assistant. Here is a sample automation: + +```yaml +automation: + trigger: + platform: event + event_type: MODE_CHANGE + ... + ... +``` + +This can be triggered with a call to AppDaemon's fire_event() as follows: + +```python +self.fire_event("MODE_CHANGE", mode = "Day") +``` + +## Presence + +Presence in Home Assistant is tracked using Device Trackers. The state of all device trackers can be found using the `get_state()` call, however AppDaemon provides several convenience functions to make this easier. + +### get_trackers() + +Return a list of all device trackers. This is designed to be iterated over. + +#### Synopsis + +```python +tracker_list = get_trackers() +``` +#### Returns + +An iterable list of all device trackers. + +#### Examples + +```python +trackers = self.get_trackers() +for tracker in trackers: + do something +``` + +### get_tracker_state() + +Get the state of a tracker. The values returned depend in part on the configuration and type of device trackers in the system. Simpler tracker types like `Locative` or `NMAP` will return one of 2 states: + +- `home` +- `not_home` + +Some types of device tracker are in addition able to supply locations that have been configured as Geofences, in which case the name of that location can be returned. + +#### Synopsis + +```python +location = self.get_tracker_state(tracker_id) +``` + +#### Returns + +A string representing the location of the tracker. + +#### Parameters + +##### tracker_id + +Fully qualified entity_id of the device tracker to query, e.g. `device_tracker.andrew`. + +#### Examples + +```python +trackers = self.get_trackers() +for tracker in trackers: + self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) +``` + +### everyone_home() + +A convenience function to determine if everyone is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. + +#### Synopsis + +```python +result = self.everyone_home() +``` +#### Returns + +Returns `True` if everyone is at home, `False` otherwise. + +#### Examples + +```python +if self.everyone_home(): + do something +``` +### anyone_home() + +A convenience function to determine if one or more person is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. + +#### Synopsis + +```python +result = self.anyone_home() +``` + +#### Returns + +Returns `True` if anyone is at home, `False` otherwise. + +#### Examples + +```python +if self.anyone_home(): + do something +``` +### noone_home() + +A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers. + +#### Synopsis + +```python +result = self.noone_home() +``` + +#### Returns + +Returns `True` if no one is home, `False` otherwise. + +#### Examples + +```python +if self.noone_home(): + do something +``` + +## Miscellaneous Helper Functions + +### time() + +Returns a python `time` object representing the current time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. + +#### Synopsis + +```python +time() +``` + +#### Returns + +A localised Python time object representing the current AppDaemon time. + +#### Parameters + +None + +#### Example + +```python +now = self.time() +``` + +### date() + +Returns a python `date` object representing the current date. Use this in preference to the standard Python ways to discover the current date, especially when using the "Time Travel" feature for testing. + +#### Synopsis + +```python +date() +``` + +#### Returns + +A localised Python time object representing the current AppDaemon date. + +#### Parameters + +None + +#### Example + +```python +today = self.date() +``` + +### datetime() + +Returns a python `datetime` object representing the current date and time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. + +#### Synopsis + +```python +datetime() +``` + +#### Returns + +A localised Python datetime object representing the current AppDaemon date and time. + +#### Parameters + +None + +#### Example + +```python +now = self.datetime() +``` + + +### convert_utc() + +Home Assistant provides timestamps of several different sorts that may be used to gain additional insight into state changes. These timestamps are in UTC and are coded as ISO 8601 Combined date and time strings. `convert_utc()` will accept one of these strings and convert it to a localised Python datetime object representing the timestamp + +#### Synopsis + +```python +convert_utc(utc_string) +``` + +#### Returns + +`convert_utc(utc_string)` returns a localised Python datetime object representing the timestamp. + +#### Parameters + +##### utc_string + +An ISO 8601 encoded date and time string in the following format: `2016-07-13T14:24:02.040658-04:00` + +#### Example + +### parse_time() + +Takes a string representation of a time, or sunrise or sunset offset and converts it to a `datetime.time` object. + +#### Synopsis + +```python +parse_time(time_string) +``` + +#### Returns + +A `datetime.time` object, representing the time given in the `time_string` argument. + +#### Parameters + +##### time_string + +A representation of the time in a string format with one of the following formats: + +- HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. +- sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds + +#### Example + +```python +time = self.parse_time("17:30:00") +time = self.parse_time("sunrise") +time = self.parse_time("sunset + 00:30:00") +time = self.parse_time("sunrise + 01:00:00") +``` + +### now_is_between() + +Takes two string representations of a time, or sunrise or sunset offset and returns true if the current time is between those 2 times. `now_is_between()` can correctly handle transitions across midnight. + +#### Synopsis + +```python +now_is_between(start_time_string, end_time_string) +``` + +#### Returns + +`True` if the current time is within the specified start and end times, `False` otherwise. + +#### Parameters + +##### start_time_string, end_time_string + +A representation of the start and end time respectively in a string format with one of the following formats: + +- HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. +- sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds + +#### Example + +```python +if self.now_is_between("17:30:00", "08:00:00"): + do something +if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"): + do something +``` + +### friendly_name() + +`frindly_name()` will return the Friendly Name of an entity if it has one. + +#### Synopsis + +```python +Name = self.friendly_name(entity_id) +``` + +#### Returns + +The friendly name of the entity if it exists or the entity id if not. + +#### Example + +```python +tracker = "device_tracker.andrew" +self.log("{} ({}) is {}".format(tracker, self.friendly_name(tracker), self.get_tracker_state(tracker))) +``` + +### split_entity() + +`split_entity()` will take a fully qualified entity id of the form `light.hall_light` and split it into 2 values, the device and the entity, e.g. `light` and `hall_light`. + +#### Synopsis + +```python +device, entity = self.split_entity(entity_id) +``` + +#### Parameters + +##### entity_id + +Fully qualified entity id to be split. + +#### Returns + +A list with 2 entries, the device and entity respectively. + +#### Example + +```python +device, entity = self.split_entity(entity_id) +if device == "scene": + do something specific to scenes +``` + + +### get_app() + +`get_app()` will return the instantiated object of another app running within the system. This is useful for calling functions or accessing variables that reside in different apps without requiring duplication of code. + +#### Synopsis + +```python +get_app(self, name) +``` +#### Parameters + +##### name + +Name of the app required. This is the name specified in header section of the config file, not the module or class. + +#### Returns + +An object reference to the class. + +#### Example +```python +MyApp = self.get_app("MotionLights") +MyApp.turn_light_on() +``` + +### split_device_list() + +`split_device_list()` will take a comma separated list of device types (or anything else for that matter) and return them as an iterable list. This is intended to assist in use cases where the App takes a list of entities from an argument, e.g. a list of sensors to monitor. If only one entry is provided, an iterable list will still be returned to avoid the need for special processing. + +#### Synopsis + +```python +devices = split_device_list(list) +``` + +#### Returns + +A list of split devices with 1 or more entries. + +#### Example + +```python +for sensor in self.split_device_list(self.args["sensors"]): + do something for each sensor, e.g. make a state subscription +``` + + +### Writing to Logfiles + +AppDaemon uses 2 separate logs - the general log and the error log. An AppDaemon App can write to either of these using the supplied convenience methods `log()` and `error()`, which are provided as part of parent `AppDaemon` class, and the call will automatically pre-pend the name of the App making the call. The `-D` option of AppDaemon can be used to specify what level of logging is required and the logger objects will work as expected. + +### log() + +#### Synopsis + +```python +log(message, level = "INFO") +``` + +#### Returns + +Nothing + +#### Parameters + +##### Message + +The message to log. + +##### level + +The log level of the message - takes a string representing the standard logger levels. + +#### Examples + +```python +self.log("Log Test: Parameter is {}".format(some_variable)) +self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") +``` + +### error() + +#### Synopsis + +```python +error(message, level = "WARNING") +``` +#### Returns + +Nothing + +#### Parameters + +##### Message + +The message to log. + +##### level + +The log level of the message - takes a string representing the standard logger levels. + +#### Examples + +```python +self.error("Some Warning string") +self.error("Some Critical string", level = "CRITICAL") +``` + +## Sharing information between Apps + +Sharing information between different Apps is very simple if required. Each app gets access to a global dictionary stored in a class attribute called `self.global_vars`. Any App can add or read any key as required. This operation is not however threadsafe so some car is needed. + +In addition, Apps have access to the entire configuration if required, meaning they can access AppDaemon configuration items as well as parameters from other Apps. To use this, there is a class attribute called `self.config`. It contains a `ConfigParser` object, which is similar in operation to a `Dictionary`. To access any apps parameters, simply reference the ConfigParser object using the Apps name (form the config file) as the first key, and the parameter required as the second, for instance: + +```python +other_apps_arg = self.config["some_app"]["some_parameter"]. +``` + +To get AppDaemon's config parameters, use the key "AppDaemon", e.g.: + +```python +app_timezone = self.config["AppDaemon"]["time_zone"] +``` + +And finally, it is also possible to use the AppDaemon as a global area for sharing parameters across Apps. Simply add the required parameters to the AppDaemon section of your config: + +```ini +[AppDaemon] +ha_url = +ha_key = +... +global_var = hello world +``` + +Then access it as follows: + +```python +my_global_var = conf.config["AppDaemon"]["global_var"] +``` + +## Development Workflow + +Developing Apps is intended to be fairly simple but is an exercise in programming like any other kind of Python programming. As such, it is expected that apps will contain syntax errors and will generate exceptions during the development process. AppDaemon makes it very easy to iterate through the development process as it will automatically reload code that has changed and also will reload code if any of the parameters in the configuration file change as well. + +The recommended workflow for development is as follows: + +- Open a window and tail the `appdaemon.log` file +- Open a second window and tail the `error.log` file +- Open a third window or the editor of your choice for editing the App + +With this setup, you will see that every time you write the file, AppDaemon will log the fact and let you know it has reloaded the App in the `appdaemon.log` file. + +If there is an error in the compilation or a runtime error, this will be directed to the `error.log` file to enable you to see the error and correct it. When an error occurs, there will also be a warning message in `appdaemon.log` to tell you to check the error log. + +## Time Travel + +OK, time travel sadly isn't really possible but it can be very useful when testing Apps. For instance, imagine you have an App that turns a light on every day at sunset. It might be nice to test it without waiting for Sunset - and with AppDaemon's "Time Travel" features you can. + +### Choosing a Start Time + +Internally, AppDaemon keeps track of it's own time relative to when it was started. This make is possible to start AppDaemon with a different start time and date to the current time. For instance to test that sunset App, start AppDaemon at a time just before sunset and see if it works as expected. To do this, simply use the "-s" argument on AppDaemon's command line. e,g,: + +```bash +$ appdaemon -s "2016-06-06 19:16:00" +2016-09-06 17:16:00 INFO AppDaemon Version 1.3.2 starting +2016-09-06 17:16:00 INFO Got initial state +2016-09-06 17:16:00 INFO Loading Module: /export/hass/appdaemon_test/conf/test_apps/sunset.py +... +``` + +Note the timestamps in the log - AppDaemon believes it is now just before sunset and will process any callbacks appropriately. + +### Speeding things up + +Some Apps need to run for periods of a day or two for you to test all aspects. This can be time consuming, but Time Travel can also help here in two ways. The first is by speeding up time. To do this, simply use the `-t` option on the command line. This specifies the amount of time a second lasts while time travelling. The default of course is 1 second, but if you change it to `0.1` for instance, AppDaemon will work 10x faster. If you set it to `0`, AppDaemon will work as fast as possible and, depending in your hardware, may be able to get through an entire day in a matter of minutes. Bear in mind however, due to the threaded nature of AppDaemon, when you are running with `-t 0` you may see actual events firing a little later than expected as the rest of the system tries to keep up with the timer. To set the tick time, start AppDaemon as follows: + +```bash +$ appdaemon -t 0.1 +``` + +AppDaemon also has an interval flag - think of this as a second multiplier. If the flag is set to 3600 for instance, each tick of the scheduler will jump the time forward by an hour. This is good for covering vast amounts of time quickly but event firing accuracy will suffer as a result. For example: + +```bash +$ appdaemon -e 3600 +``` + +### Automatically stopping + +AppDaemon can be set to terminate automatically at a specific time. This can be useful if you want to repeatedly rerun a test, for example to test that random values are behaving as expected. Simply specify the end time with the `-e` flag as follows: + +```bash +$ appdaemon -e "2016-06-06 10:10:00" +2016-09-06 17:16:00 INFO AppDaemon Version 1.3.2 starting +2016-09-06 17:16:00 INFO Got initial state +2016-09-06 17:16:00 INFO Loading Module: /export/hass/appdaemon_test/conf/test_apps/sunset.py +... +``` + +The `-e` flag is most useful when used in conjuntion with the -s flag and optionally the `-t` flag. For example, to run from just before sunset, for an hour, as fast as possible: + +```bash +$ appdaemon -s "2016-06-06 19:16:00" -s "2016-06-06 20:16:00" -t 0 +``` + + +### A Note on Times + +Some Apps you write may depend on checking times of events relative to the current time. If you are time travelling this will not work if you use standard python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied `time()`, `date()` and `datetime()` calls, documented earlier. These calls will consult with AppDaemon's internal time rather than the actual time and give you the correct values. \ No newline at end of file diff --git a/source/_ecosystem/appdaemon/configuration.markdown b/source/_ecosystem/appdaemon/configuration.markdown new file mode 100644 index 00000000000..d17504ea4ed --- /dev/null +++ b/source/_ecosystem/appdaemon/configuration.markdown @@ -0,0 +1,80 @@ +--- +layout: page +title: "Configuration" +description: "AppDaemon Configuration" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +When you have appdaemon installed by either method, copy the `conf/appdaemon.cfg.example` file to `conf/appdaemon.cfg`, then edit the `[AppDaemon]` section to reflect your environment: + +``` +[AppDaemon] +ha_url = +ha_key = +logfile = STDOUT +errorfile = STDERR +app_dir = /conf/apps +threads = 10 +latitude = +longitude = +elevation = +cert_path = +# Apps +[hello_world] +module = hello +class = HelloWorld +``` + +- `ha_url` is a reference to your home assistant installation and must include the correct port number and scheme (`http://` or `https://` as appropriate) +- `ha_key` should be set to your key if you have one, otherwise it can be removed. +- `logfile` (optional) is the path to where you want `AppDaemon` to keep its main log. When run from the command line this is not used - log messages come out on the terminal. When running as a daemon this is where the log information will go. In the example above I created a directory specifically for AppDaemon to run from, although there is no reason you can't keep it in the `appdaemon` directory of the cloned repository. If `logfile = STDOUT`, output will be sent to stdout instead of stderr when running in the foreground, if not specified, output will be sent to STDOUT. +- `errorfile` (optional) is the name of the logfile for errors - this will usually be errors during compilation and execution of the apps. If `errorfile = STDERR` errors will be sent to stderr instead of a file, if not specified, output will be sent to STDERR. +- `app_dir` (optional) is the directory the apps are placed in. If not specified, AppDaemon will look first in `~/.homeassistant` then `/etc/appdaemon` for a subdirectory named `apps` +- `threads` - the number of dedicated worker threads to create for running the apps. Note, this will bear no resembelance to the number of apps you have, the threads are re-used and only active for as long as required to tun a particular callback or initialization, leave this set to 10 unless you experience thread starvation +- `latitude`, `longitude`, `elevation`, `timezone` - should all be copied from your home assistant configuration file +- `cert_path` (optional) - path to root CA cert directory - use only if you are using self signed certs. + +The `#Apps` section is the configuration for the Hello World program and should be left in place for initial testing but can be removed later if desired, as other Apps are added, App configuration is described in the [API doc](API.md). + +## Docker + +For Docker Configuration you need to take a couple of extra things into consideration. + +Our Docker image is designed to load your configuration and apps from a volume at `/conf` so that you can manage them in your own git repository, or place them anywhere else on the system and map them using the Docker command line. + +For example, if you have a local repository in `/Users/foo/ha-config` containing the following files: + +```bash +$ git ls-files +configuration.yaml +customize.yaml +known_devices.yaml +appdaemon.cfg +apps +apps/magic.py +``` + +You will need to modify the `appdaemon.cfg` file to point to these apps in `/conf/apps`: + +``` +[AppDaemon] +ha_url = +ha_key = +logfile = STDOUT +errorfile = STDERR +app_dir = /conf/apps +threads = 10 +latitude = +longitude = +elevation = +``` + +You can run Docker and point the conf volume to that directory. \ No newline at end of file diff --git a/source/_ecosystem/appdaemon/example_apps.markdown b/source/_ecosystem/appdaemon/example_apps.markdown new file mode 100644 index 00000000000..6f42885fec9 --- /dev/null +++ b/source/_ecosystem/appdaemon/example_apps.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Example Apps" +description: "AppDaemon Example Apps" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +There are a number of example apps under conf/examples, and the `conf/examples.cfg` file gives sample parameters for them. \ No newline at end of file diff --git a/source/_ecosystem/appdaemon/installation.markdown b/source/_ecosystem/appdaemon/installation.markdown new file mode 100644 index 00000000000..f313035ae49 --- /dev/null +++ b/source/_ecosystem/appdaemon/installation.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Installation" +description: "AppDaemon Installation" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +Installation is either by pip3 or Docker. + +## Clone the Repository + +For either method you will need to clone the **AppDaemon** repository to the current local directory on your machine. + +``` bash +$ git clone https://github.com/acockburn/appdaemon.git +``` + +Change your working directory to the repository root. Moving forward, we will be working from this directory. + +``` bash +$ cd appdaemon +``` + +## Install using Docker + +To build the Docker image run the following: + +``` bash +$ docker build -t appdaemon . +``` + +(Note the period at the end of the above command) + +## Install Using PIP3 + +Before running `AppDaemon` you will need to install the package: + +```bash +$ sudo pip3 install . +``` diff --git a/source/_ecosystem/appdaemon/operation.markdown b/source/_ecosystem/appdaemon/operation.markdown new file mode 100644 index 00000000000..e928ec4babd --- /dev/null +++ b/source/_ecosystem/appdaemon/operation.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Operation" +description: "Operation" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +Since AppDaemon under the covers uses the exact same APIs as the frontend UI, you typically see it react at about the same time to a given event. Calling back to Home Assistant is also pretty fast especially if they are running on the same machine. In action, observed latency above the built in automation component is usually sub-second. diff --git a/source/_ecosystem/appdaemon/reboot.markdown b/source/_ecosystem/appdaemon/reboot.markdown new file mode 100644 index 00000000000..4cac399650b --- /dev/null +++ b/source/_ecosystem/appdaemon/reboot.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Starting at Reboot" +description: "Starting at Reboot" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +To run `AppDaemon` at reboot, I have provided a sample init script in the `./scripts` directory. These have been tested on a Raspberry PI - your mileage may vary on other systems. There is also a sample Systemd script. diff --git a/source/_ecosystem/appdaemon/running.markdown b/source/_ecosystem/appdaemon/running.markdown new file mode 100755 index 00000000000..62e8718f9b8 --- /dev/null +++ b/source/_ecosystem/appdaemon/running.markdown @@ -0,0 +1,96 @@ +--- +layout: page +title: "Running AppDaemon" +description: "Running AppDaemon" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +As configured, AppDaemon comes with a single HelloWorld App that will send a greeting to the logfile to show that everything is working correctly. + +## Docker + +Assuming you have set the config up as described above for Docker, you can run it with the command: + +```bash +$ docker run -d -v /conf:/conf --name appdaemon appdaemon:latest +``` + +In the example above you would use: + +```bash +$ docker run -d -v /Users/foo/ha-config:/conf --name appdaemon appdaemon:latest +``` + +Where you place the `conf` and `conf/apps` directory is up to you - it can be in downloaded repostory, or anywhere else on the host, as long as you use the correct mapping in the `docker run` command. + +You can inspect the logs as follows: + +```bash +$ docker logs appdaemon +2016-08-22 10:08:16,575 INFO Got initial state +2016-08-22 10:08:16,576 INFO Loading Module: /export/hass/appdaemon_test/conf/apps/hello.py +2016-08-22 10:08:16,578 INFO Loading Object hello_world using class HelloWorld from module hello +2016-08-22 10:08:16,580 INFO Hello from AppDaemon +2016-08-22 10:08:16,584 INFO You are now ready to run Apps! +``` + +Note that for Docker, the error and regular logs are combined. + +## PIP3 + +You can then run AppDaemon from the command line as follows: + +```bash +$ appdaemon -c conf/appdaemon.cfg +``` + +If all is well, you should see something like the following: + +``` +$ appdaemon -c conf/appdaemon.cfg +2016-08-22 10:08:16,575 INFO Got initial state +2016-08-22 10:08:16,576 INFO Loading Module: /export/hass/appdaemon_test/conf/apps/hello.py +2016-08-22 10:08:16,578 INFO Loading Object hello_world using class HelloWorld from module hello +2016-08-22 10:08:16,580 INFO Hello from AppDaemon +2016-08-22 10:08:16,584 INFO You are now ready to run Apps! +``` + +## AppDaemon arguments + +``` +usage: appdaemon [-h] [-c CONFIG] [-p PIDFILE] [-t TICK] [-s STARTTIME] + [-e ENDTIME] [-i INTERVAL] + [-D {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-v] [-d] + +optional arguments: + -h, --help show this help message and exit + -c CONFIG, --config CONFIG + full path to config file + -p PIDFILE, --pidfile PIDFILE + full path to PID File + -t TICK, --tick TICK time in seconds that a tick in the schedular lasts + -s STARTTIME, --starttime STARTTIME + start time for scheduler + -e ENDTIME, --endtime ENDTIME + end time for scheduler + -i INTERVAL, --interval INTERVAL + multiplier for scheduler tick + -D {DEBUG,INFO,WARNING,ERROR,CRITICAL}, --debug {DEBUG,INFO,WARNING,ERROR,CRITICAL} + debug level + -v, --version show program's version number and exit + -d, --daemon run as a background process +``` + +-c is the path to the configuration file. If not specified, AppDaemon will look for a file named `appdaemon.cfg` first in `~/.homeassistant` then in `/etc/appdaemon`. If the file is not specified and it is not found in either location, AppDaemon will raise an exception. + +-d and -p are used by the init file to start the process as a daemon and are not required if running from the command line. + +-D can be used to increase the debug level for internal AppDaemon operations as well as apps using the logging function. + +The -s, -i, -t and -s options are for the Time Travel feature and should only be used for testing. They are described in more detail in the API documentation. diff --git a/source/_ecosystem/appdaemon/tutorial.markdown b/source/_ecosystem/appdaemon/tutorial.markdown new file mode 100755 index 00000000000..7c23e38a95d --- /dev/null +++ b/source/_ecosystem/appdaemon/tutorial.markdown @@ -0,0 +1,130 @@ +--- +layout: page +title: "AppDaemon Tutorial" +description: "AppDaemon Tutorial" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +## Another Take on Automation + +If you haven't yet read Paulus' excellent Blog entry on [Perfect Home Automation](https://home-assistant.io/blog/2016/01/19/perfect-home-automation/) I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the "Automation" in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation in bring this all together in the vast and chaotic ecosystem that is the "Internet of Things". + +So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks: + +- Can the system respond to presence or absence of people? +- Can I turn a light on at Sunset +/- a certain amount of time? +- Can I arrive home in light or dark and have the lights figure out if they should be on or off? +- As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly? +- Is it open and expandable? +- Does it run locally without any reliance on the cloud? + +In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and it's Restful API. + +So why `AppDaemon`? AppDaemon is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table: + +- New paradigm - some problems require a procedural and/or iterative approach, and `AppDaemon` Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that Automations can't +- Ease of use - AppDaemon's API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as "Pythonic" as possible, experienced Python programmers should feel right at home. +- Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g. a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the config file +- Dynamic - AppDaemon has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to it's loose coupling. However, it is better than that - the user can make changes to code and AppDaemon will automatically reload the code, figure out which Apps were using it and restart them to use the new code with out the need to restart `AppDaemon` itself. It is also possible to change parameters for an individual or multiple apps and have them picked up dynamically, and for a final trick, removing or adding apps is also picked up dynamically. Testing cycles become a lot more efficient as a result. +- Complex logic - Python's If/Else constructs are clearer and easier to code for arbitrarily complex nested logic +- Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened +- All the power of Python - use any of Python's libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits! + +It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier. + +## How it Works + +The best way to show what AppDaemon does is through a few simple examples. + +### Sunrise/Sunset Lighting + +Lets start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its `initialize()` function called which gives it a chance to register a callback for AppDaemons's scheduler for a specific time. In this case we are using `run_at_sunrise()` and `run_at_sunset()` to register 2 separate callbacks. The argument `0` is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals it can be convenient to use Python's `datetime.timedelta` class for calculations. When sunrise or sunset occurs, the appropriate callback function, `sunrise_cb()` or `sunset_cb()` is called which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables `args["on_scene"]` and `args["off_scene"]` are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App. + +```python +import homeassistant.appapi as appapi + +class OutsideLights(appapi.AppDaemon): + + def initialize(self): + self.run_at_sunrise(self.sunrise_cb, 0) + self.run_at_sunset(self.sunset_cb, 0) + + def sunrise_cb(self, kwargs): + self.turn_on(self.args["off_scene"]) + + def sunset_cb(self, kwargs): + self.turn_on(self.args["on_scene"]) + +``` + +This is also fairly easy to achieve with Home Assistant automations, but we are just getting started. + +### Motion Light + +Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changesd where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callack function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: + +```python +import homeassistant.appapi as appapi + +class FlashyMotionLights(appapi.AppDaemon): + + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new = "on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + + def light_off(self, kwargs): + self.turn_off("light.drive") +``` + +This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts. + +Now lets extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1 second timer to run `flash_warning()` which when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after 10 iterations. + +```python +import homeassistant.appapi as appapi + +class MotionLights(appapi.AppDaemon): + + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new = "on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + self.flashcount = 0 + self.run_in(self.flash_warning, 1) + + def light_off(self, kwargs): + self.turn_off("light.drive") + + def flash_warning(self, kwargs): + self.toggle("light.living_room") + self.flashcount += 1 + if self.flashcount < 10: + self.run_in(self.flash_warning, 1) +``` + +Of course if I wanted to make this App or its predecessor reusable I would have provide parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes. + +In addition, Apps can write to `AppDaemon`'s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple. + +I have spent the last few weeks moving all of my (fairly complex) automations over to `APPDaemon` and so far it is working very reliably. + +Some people will maybe look at all of this and say "what use is this, I can already do all of this", and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations. + +If this has whet your appetite, feel free to give it a try. + +Happy Automating! + + diff --git a/source/_ecosystem/appdaemon/updating.markdown b/source/_ecosystem/appdaemon/updating.markdown new file mode 100644 index 00000000000..28229fb6ece --- /dev/null +++ b/source/_ecosystem/appdaemon/updating.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Updating AppDaemon" +description: "Updating AppDaemon" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +To update AppDaemon after I have released new code, just run the following command to update your copy: + +```bash +$ git pull origin +``` + +If you are using pip3 for the install do this: + +```bash +$ sudo pip3 uninstall appdaemon +$ sudo pip3 install . +``` + +If you are using docker, rerun the steps to create a new docker image. diff --git a/source/_ecosystem/appdaemon/windows.markdown b/source/_ecosystem/appdaemon/windows.markdown new file mode 100755 index 00000000000..9b443f77534 --- /dev/null +++ b/source/_ecosystem/appdaemon/windows.markdown @@ -0,0 +1,23 @@ +--- +layout: page +title: "Windows Support" +description: "Windows Support" +release_date: 2016-11-27 08:00:00 -0500 +sidebar: true +comments: false +sharing: true +footer: true +regenerate: true +hide_github_edit: true +--- + +AppDaemon runs under windows and has been tested with the official 3.5.2 release of Python. There are a couple of caveats however: + +- The `-d` or `--daemonize` option is not supported owing to limitations in the Windows implementation of Python. +- Some internal diagnostics are disabled. This is not user visible but may hamper troubleshooting of internal issues if any crop up + +AppDaemon can be installed exactly as per the instructions for every other version using pip3. + +## Windows Under the Linux Subsystem + +Windows 10 now supports a full Linux bash environment that is capable of running Python. This is essentially an Ubuntu distribution and works extremely well. It is possible to run AppDaemon in exactly the same way as for Linux distributions, and none of the above Windows Caveats apply to this version. This is the reccomended way to run AppDaemon in a Windows 10 and later environment. \ No newline at end of file diff --git a/source/_includes/asides/ecosystem_appdaemon_navigation.html b/source/_includes/asides/ecosystem_appdaemon_navigation.html new file mode 100755 index 00000000000..8333511804e --- /dev/null +++ b/source/_includes/asides/ecosystem_appdaemon_navigation.html @@ -0,0 +1,19 @@ +
+ +
+

AppDaemon

+ +
+
diff --git a/source/_includes/asides/ecosystem_navigation.html b/source/_includes/asides/ecosystem_navigation.html index a11b2324306..ed30ae7c1cb 100755 --- a/source/_includes/asides/ecosystem_navigation.html +++ b/source/_includes/asides/ecosystem_navigation.html @@ -3,6 +3,8 @@ {% include asides/ecosystem_ios_navigation.html | compact_newlines %} {% elsif url_parts[2] == "hadashboard" %} {% include asides/ecosystem_hadashboard_navigation.html | compact_newlines %} +{% elsif url_parts[2] == "appdaemon" %} + {% include asides/ecosystem_appdaemon_navigation.html | compact_newlines %} {% comment %} {% elsif url_parts[2] == "cookbook" %} {% include asides/cookbook_navigation.html | compact_newlines %} From 418fde81004191bb60ad7beb5458ac74493bca00 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 09:50:18 +0100 Subject: [PATCH 007/123] Fix configuration variables and add full configuration sample --- source/_components/cover.rpi_gpio.markdown | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/source/_components/cover.rpi_gpio.markdown b/source/_components/cover.rpi_gpio.markdown index 3b2205d724b..e51d150d2d5 100644 --- a/source/_components/cover.rpi_gpio.markdown +++ b/source/_components/cover.rpi_gpio.markdown @@ -23,6 +23,26 @@ Although you do not need Andrews Hilliday's software controller when you run Hom To enable Raspberry Pi Covers in your installation, add the following to your `configuration.yaml` file: +```yaml +# Example configuration.yaml entry +cover: + platform: rpi_gpio + covers: + - relay_pin: 10 + state_pin: 11 +``` + +Configuration variables: + +- **relay_time** (*Optional*): The time that the relay will be on for in seconds. Default is .2 seconds. +- **state_pull_mode** (*Optional*): The direction the State pin is pulling. It can be UP or DOWN. Default is UP. +- **covers** array (*Required*): List of your doors. + - **relay_pin** (*Required*): The pin of your Raspberry Pi where the relay is connected. + - **state_pin** (*Required*): The pin of your Raspberry Pi to retrieve the state. + - **name** (*Optional*): Name to use in the frontend. + +Full example: + ```yaml # Example configuration.yaml entry cover: @@ -37,12 +57,4 @@ cover: name: 'Right door' ``` -Configuration variables: - -- **covers** array (*Required*): List of your doors. - - **name** (*Optional*): Name to use in the Frontend. - - **relay_pin** (*Required*): The pin of your Raspberry Pi where the relay is connected. - - **state_pin** (*Required*): The pin of your Raspberry Pi to retrieve the state. - - **state_pull_mode** (*Optional*): The direction the State pin is pulling. It can be UP or DOWN. Default is UP. - - **relay_time** (*Optional*): The time that the relay will be on for in seconds. Default is .2 seconds. From 13ef9d8a1ac0590227d1ca923a49c82dd5706b6d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 09:51:13 +0100 Subject: [PATCH 008/123] Change indent --- source/_components/cover.rpi_gpio.markdown | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/source/_components/cover.rpi_gpio.markdown b/source/_components/cover.rpi_gpio.markdown index e51d150d2d5..35588b23df9 100644 --- a/source/_components/cover.rpi_gpio.markdown +++ b/source/_components/cover.rpi_gpio.markdown @@ -26,10 +26,10 @@ To enable Raspberry Pi Covers in your installation, add the following to your `c ```yaml # Example configuration.yaml entry cover: - platform: rpi_gpio - covers: - - relay_pin: 10 - state_pin: 11 + - platform: rpi_gpio + covers: + - relay_pin: 10 + state_pin: 11 ``` Configuration variables: @@ -46,15 +46,14 @@ Full example: ```yaml # Example configuration.yaml entry cover: - platform: rpi_gpio - relay_time: 0.2 - state_pull_mode: 'UP' - covers: - - relay_pin: 10 - state_pin: 11 - - relay_pin: 12 - state_pin: 13 - name: 'Right door' + - platform: rpi_gpio + relay_time: 0.2 + state_pull_mode: 'UP' + covers: + - relay_pin: 10 + state_pin: 11 + - relay_pin: 12 + state_pin: 13 + name: 'Right door' ``` - From 3be46830ad2981b988edc560b70c0bfde1356657 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 10:40:27 +0100 Subject: [PATCH 009/123] Make titles linkable --- source/_ecosystem/appdaemon/api.markdown | 721 +++++++++--------- .../appdaemon/configuration.markdown | 4 +- .../appdaemon/installation.markdown | 8 +- .../_ecosystem/appdaemon/operation.markdown | 2 +- source/_ecosystem/appdaemon/running.markdown | 12 +- source/_ecosystem/appdaemon/tutorial.markdown | 7 +- source/_ecosystem/appdaemon/windows.markdown | 4 +- 7 files changed, 378 insertions(+), 380 deletions(-) diff --git a/source/_ecosystem/appdaemon/api.markdown b/source/_ecosystem/appdaemon/api.markdown index 63299c41948..346c0546881 100755 --- a/source/_ecosystem/appdaemon/api.markdown +++ b/source/_ecosystem/appdaemon/api.markdown @@ -11,7 +11,7 @@ regenerate: true hide_github_edit: true --- -## Anatomy of an App +## {% linkable_title Anatomy of an App %} Automations in AppDaemon are performed by creating a piece of code (essentially a Python Class) and then instantiating it as an Object one or more times by configuring it as an App in the configuration file. The App is given a chance to register itself for whatever events it wants to subscribe to, and AppDaemon will then make calls back into the Object's code when those events occur, allowing the App to respond to the event with some kind of action. @@ -72,11 +72,11 @@ class NightLight(appapi.AppDaemon): To summarize - an App's lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That's all there is to it! -## About the API +## {% linkable_title About the API The implementation of the API is located in the AppDaemon class that Apps are derived from. The code for the functions is therefore available to the App simply by invoking the name of the function from the object namespace using the `self` keyword, as in the above examples. `self.turn_on()` for example is just a method defined in the parent class and made available to the child. This design decision was made to simplify some of the implementation and hide passing of unnecessary variables during the API invocation. -## Configuration of Apps +## {% linkable_title Configuration of Apps %} Apps are configured by specifying new sections in the configuration file. `[AppDaemon]` is a reserved section, for configuration of AppDaemon itself. The name of the section is the name the App is referred to within the system in log files etc. and must be unique. To configure a new App you need a minimum of two directives: @@ -96,13 +96,13 @@ When AppDaemon sees the following configuration it will expect to find a class c When starting the system for the first time or when reloading an App or Module, the system will log the fact in it's main log. It is often the case that there is a problem with the class, maybe a syntax error or some other problem. If that is the case, details will be output to the error log allowing the user to remedy the problem and reload. -## Steps to writing an App +## {% linkable_title Steps to writing an App %} 1. Create the code in a new or shared module by deriving a class from AppDaemon, add required callbacks and code 2. Add the App to the configuration file 3. There is no number 3 -## Reloading Modules and Classes +## {% linkable_title Reloading Modules and Classes %} Reloading of modules is automatic. When the system spots a change in a module, it will automatically reload and recompile the module. It will also figure out which Apps were using that Module and restart them, causing all of their existing callbacks to be cleared, and their `initialize()` function to be called. @@ -110,7 +110,7 @@ The same is true if changes are made to an App's configuration - changing the cl The suggested order for creating a new App is to add the module code first and work until it compiles cleanly, and only then add an entry in the configuration file to actually run it. A good workflow is to continuously monitor the error file (using `tail -f` on Linux for instance) to ensure that errors are seen and can be remedied. -## Passing Arguments to Apps +## {% linkable_title Passing Arguments to Apps %} There wouldn't be much point in being able to run multiple versions of an App if there wasn't some way to instruct them to do something different. For this reason it is possible to pass any required arguments to an App, which are then made available to the object at runtime. The arguments themselves can be called anything (apart from `module` or `class`) and are simply added into the section after the 2 mandatory directives like so: @@ -149,7 +149,7 @@ sensor = binary_sensor.garage light = light.garage ``` -## Callback Constraints +## {% linkable_title Callback Constraints %} Callback constraints are a feature of AppDaemon that removes the need for repetition of some common coding checks. Many Apps will wish to process their callbacks only when certain conditions are met, e.g. someone is home, and it's after sunset. These kinds of conditions crop up a lot, and use of callback constraints can significantly simplify the logic required within callbacks. @@ -175,7 +175,7 @@ An App can have as many or as few as are required. When more than one constraint They are described individually below. -### input_boolean +### {% linkable_title input_boolean %} By default, the input_boolean constraint prevents callbacks unless the specified input_boolean is set to "on". This is useful to allow certain Apps to be turned on and off from the user interface. For example: ```ini @@ -194,7 +194,7 @@ class = SomeClass constrain_input_boolean = input_boolean.enable_motion_detection,off ``` -### input_select +### {% linkable_title input_select %} The input_select constraint prevents callbacks unless the specified input_select is set to one or more of the nominated (comma separated) values. This is useful to allow certain Apps to be turned on and off according to some flag, e.g. a house mode flag. ```ini @@ -204,7 +204,7 @@ constrain_input_select = input_select.house_mode,Day constrain_input_select = input_select.house_mode,Day,Evening,Night ``` -### presence +### {% linkable_title presence %} The presence constraint will constrain based on presence of device trackers. It takes 3 possible values: - `noone` - only allow callback execution when no one is home - `anyone` - only allow callback execution when one or more person is home @@ -218,7 +218,7 @@ constrain_presence = someone constrain_presence = noone ``` -### time +### {% linkable_title time %} The time constraint consists of 2 variables, `constrain_start_time` and `constrain_end_time`. Callbacks will only be executed if the current time is between the start and end times. - If both are absent no time constraint will exist - If only start is present, end will default to 1 second before midnight @@ -242,7 +242,7 @@ constrain_start_time = sunset - 00:45:00 constrain_end_time = sunrise + 00:45:00 ``` -### days +### {% linkable_title days %} The day constraint consists of as list of days for which the callbacks will fire, e.g. ```ini @@ -251,7 +251,7 @@ constrain_days = mon,tue,wed Callback constraints can also be applied to individual callbacks within Apps, see later for more details. -## A Note on Threading +## {% linkable_title A Note on Threading %} AppDaemon is multithreaded. This means that any time code within an App is executed, it is executed by one of many threads. This is generally not a particularly important consideration for this application; in general, the execution time of callbacks is expected to be far quicker than the frequency of events causing them. However, it should be noted for completeness, that it is certainly possible for different pieces of code within the App to be executed concurrently, so some care may be necessary if different callback for instance inspect and change shared variables. This is a fairly standard caveat with concurrent programming, and if you know enough to want to do this, then you should know enough to put appropriate safeguards in place. For the average user however this shouldn't be an issue. If there are sufficient use cases to warrant it, I will consider adding locking to the function invocations to make the entire infrastructure threadsafe, but I am not convinced that it is necessary. @@ -259,9 +259,9 @@ An additional caveat of a threaded worker pool environment is that it is the exp Given the above, NEVER use Python's `time.sleep()` if you want to perform an operation some time in the future, as this will tie up a thread for the period of the sleep. Instead use the scheduler's `run_in()` function which will allow you to delay without blocking any threads. -## State Operations +## {% linkable_title State Operations %} -### A note on Home Assistant State +### {% linkable_title A note on Home Assistant State %} State within Home Assistant is stored as a collection of dictionaries, one for each entity. Each entity's dictionary will have some common fields and a number of entity type specific fields The state for an entity will always have the attributes: @@ -275,9 +275,9 @@ Also bear in mind that some attributes such as brightness for a light, will not In most cases, the attribute `state` has the most important value in it, e.g. for a light or switch this will be `on` or `off`, for a sensor it will be the value of that sensor. Many of the AppDaemon API calls and callbacks will implicitly return the value of state unless told to do otherwise. -### get_state() +### {% linkable_title get_state() %} -#### Synopsis +#### {% linkable_title Synopsis %} ```python get_state(entity = None, attribute = None) @@ -285,27 +285,27 @@ get_state(entity = None, attribute = None) `get_state()` is used to query the state of any component within Home Assistant. State updates are continuously tracked so this call runs locally and does not require AppDaemon to call back to Home Assistant and as such is very efficient. -#### Returns +#### {% linkable_title Returns %} `get_state()` returns a `dictionary` or single value, the structure of which varies according to the parameters used. -#### Parameters +#### {% linkable_title Parameters All parameters are optional, and if `get_state()` is called with no parameters it will return the entire state of Home Assistant at that given time. This will consist of a dictionary with a key for each entity. Under that key will be the standard entity state information. -##### entity +##### {% linkable_title entity %} This is the name of an entity or device type. If just a device type is provided, e.g. `light` or `binary_sensor`, `get_state()` will return a dictionary of all devices of that type, indexed by the entity_id, containing all the state for each entity. If a fully qualified `entity_id` is provided, `get_state()` will return the state attribute for that entity, e.g. `on` or `off` for a light. -##### attribute +##### {% linkable_title attribute %} Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified `entity_id`, a single value representing the attribute will be returned, or `None` if it is not present. The value `all` for attribute has special significance and will return the entire state dictionary for the specified entity rather than an individual attribute value. -#### Examples +#### {% linkable_title Examples %} ```python # Return state for the entire system @@ -324,7 +324,7 @@ state = self.get_state("light.office_1", "brightness") state = self.get_state("light.office_1", "all") ``` -### set_state() +### {% linkable_title set_state() %} `set_state()` will make a call back to Home Assistant and make changes to the internal state of Home Assistant. This is not something that you would usually want to do and the applications are limited however the call is included for completeness. Note that for instance, setting the state of a light to `on` won't actually switch the device on, it will merely change the state of the device in Home Assistant so that it no longer reflects reality. In most cases, the state will be corrected the next time Home Assistant polls the device or someone causes a state change manually. To effect actual changes of devices use one of the service call functions. @@ -332,33 +332,33 @@ One possible use case for `set_state()` is for testing. If for instance you are At the time of writing, it appears that no checking is done as to whether or not the entity exists, so it is possible to add entirely new entries to Home Assistant's state with this call. -#### Synopsis +#### {% linkable_title Synopsis %} ```python set_state(entity_id, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} `set_state()` returns a dictionary representing the state of the device after the call has completed. -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Entity id for which the state is to be set, e.g. `light.office_1`. -##### values +##### {% linkable_title values %} A list of keyword values to be changed or added to the entities state. e.g. `state = "off"`. Note that any optional attributes such as colors for bulbs etc, need to reside in a dictionary called `attributes`; see the example. -#### Examples +#### {% linkable_title Examples %} ```python status = self.set_state("light.office_1", state = "on", attributes = {"color_name": "red"}) ``` -### About Callbacks +### {% linkable_title About Callbacks %} A large proportion of home automation revolves around waiting for something to happen and then reacting to it; a light level drops, the sun rises, a door opens etc. Home Assistant keeps track of every state change that occurs within the system and streams that information to AppDaemon almost immediately. @@ -372,7 +372,7 @@ There are 3 types of callbacks within AppDaemon: All callbacks allow the user to specify additional parameters to be handed to the callback via the standard Python `**kwargs` mechanism for greater flexibility. -### About Registering Callbacks +### {% linkable_title About Registering Callbacks %} Each of the various types of callback have their own function or functions for registering the callback: @@ -382,7 +382,7 @@ Each of the various types of callback have their own function or functions for r Each type of callback shares a number of common mechanisms that increase flexibility. -#### Callback Level Constraints +#### {% linkable_title Callback Level Constraints %} When registering a callback, you can add constraints identical to the Application level constraints described earlier. The difference is that a constraint applied to an individual callback only affects that callback and no other. The constraints are applied by adding Python keyword-value style arguments after the positional arguments. The parameters themselves are named identically to the previously described constraints and have identical functionality. For instance, adding: @@ -394,7 +394,7 @@ For example: `self.listen_state(self.motion, "binary_sensor.drive", constrain_presence="everyone")` -#### User Arguments +#### {% linkable_title User Arguments %} Any callback has the ability to allow the App creator to pass through arbitrary keyword arguments that will be presented to the callback when it is run. The arguments are added after the positional parameters just like the constraints. The only restriction is that they cannot be the same as any constraint name for obvious reasons. For example, to pass the parameter `arg1 = "home assistant"` through to a callback you would register a callback as follows: @@ -407,11 +407,11 @@ def motion(self, entity, attribute, old, new, **kwargs): self.log("Arg1 is {}".format(kwargs["arg1"])) ``` -### State Callbacks +### {% linkable_title State Callbacks %} AppDaemons's state callbacks allow an App to listen to a wide variety of events, from every state change in the system, right down to a change of a single attribute of a particular entity. Setting up a callback is done using a single API call `listen_state()` which takes various arguments to allow it to do all of the above. Apps can register as many or as few callbacks as they want. -### About State Callback Functions +### {% linkable_title About State Callback Functions %} When calling back into the App, the App must provide a class function with a known signature for AppDaemon to call. The callback will provide various information to the function to enable the function to respond appropriately. For state callbacks, a class defined callback function should look like this: @@ -424,77 +424,77 @@ You can call the function whatever you like - you will reference it in the `list The parameters have the following meanings: -#### self +#### {% linkable_title self %} A standard Python object reference. -#### entity +#### {% linkable_title entity %} Name of the entity the callback was requested for or `None`. -#### attribute +#### {% linkable_title attribute %} Name of the attribute the callback was requested for or `None`. -#### old +#### {% linkable_title old %} The value of the state before the state change. -#### new +#### {% linkable_title new %} The value of the state after the state change. `old` and `new` will have varying types depending on the type of callback. -#### \*\*kwargs +#### {% linkable_title \*\*kwargs %} A dictionary containing any constraints and/or additional user specific keyword arguments supplied to the `listen_state()` call. -### listen_state() +### l{% linkable_title isten_state() `listen_state()` allows the user to register a callback for a wide variety of state changes. -#### Synopsis +#### {% linkable_title Synopsis %} ```python handle = listen_state(callback, entity = None, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A unique identifier that can be used to cancel the callback if required. Since variables created within object methods are local to the function they are created in, and in all likelihood the cancellation will be invoked later in a different function, it is recommended that handles are stored in the object namespace, e.g. `self.handle`. -#### Parameters +#### {% linkable_title Parameters %} All parameters except `callback` are optional, and if `listen_state()` is called with no additional parameters it will subscribe to any state change within Home Assistant. -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard State Callback format documented above. -##### entity +##### {% linkable_title entity %} This is the name of an entity or device type. If just a device type is provided, e.g. `light` or `binary_sensor`, `listen_state()` will subscribe to state changes of all devices of that type. If a fully qualified `entity_id` is provided, `listen_state()` will listen for state changes for just that entity. When called, AppDaemon will supply the callback function, in old and new, with the state attribute for that entity, e.g. `on` or `off` for a light. -##### attribute (optional) +##### {% linkable_title attribute (optional) %} Name of an attribute within the entity state object. If this parameter is specified in addition to a fully qualified `entity_id`, `listen_state()` will subscribe to changes for just that attribute within that specific entity. The new and old parameters in the callback function will be provided with a single value representing the attribute. The value `all` for attribute has special significance and will listen for any state change within the specified entity, and supply the callback functions with the entire state dictionary for the specified entity rather than an individual attribute value. -##### new = (optional) +##### {% linkable_title new = (optional) %} If `new` is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually `state`) in the new state match the value of `new`. -##### old = (optional) +##### {% linkable_title old = (optional) %} If `old` is supplied as a parameter, callbacks will only be made if the state of the selected attribute (usually `state`) in the old state match the value of `old`. Note: `old` and `new` can be used singly or together. -##### duration = (optional) +##### {% linkable_title duration = (optional) %} If duration is supplied as a parameter, the callback will not fire unless the state listened for is maintained for that number of seconds. This makes the most sense if a specific attribute is specified (or the default os `state` is used), an in conjunction with the `old` or `new` parameters, or both. When the callback is called, it is supplied with the values of `entity`, `attr`, `old` and `new` that were current at the time the actual event occured, since the assumption is that none of them have changed in the intervening period. @@ -505,11 +505,11 @@ If duration is supplied as a parameter, the callback will not fire unless the st (Scheduler callbacks are documented in detail laer in this document) -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Zero or more keyword arguments that will be supplied to the callback when it is called. -#### Examples +#### {% linkable_title Examples %} ```python # Listen for any state change and return the state attribute @@ -538,64 +538,63 @@ self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on", ``` - -### cancel_listen_state() +### {% linkable_title cancel_listen_state() %} Cancel a `listen_state()` callback. This will mean that the App will no longer be notified for the specific state change that has been cancelled. Other state changes will continue to be monitored. -#### Synopsis +#### {% linkable_title Synopsis %} ```python cancel_listen_state(handle) ``` -#### Returns +#### {% linkable_title Returns %} Nothing -#### Parameters +#### {% linkable_title Parameters %} -##### handle +##### {% linkable_title handle %} The handle returned when the `listen_state()` call was made. -#### Examples +#### {% linkable_title Examples %} ```python self.cancel_listen_state(self.office_light_handle) ``` -### info_listen_state() +### {% linkable_title info_listen_state() %} Get information on state a callback from it's handle. -#### Synopsis +#### {% linkable_title Synopsis %} ```python entity, attribute, kwargs = self.info_listen_state(self.handle) ``` -#### Returns +#### {% linkable_title Returns %} entity, attribute, kwargs - the values supplied when the callback was initially created. -#### Parameters +#### {% linkable_title Parameters %} -##### handle +##### {% linkable_title handle %} The handle returned when the `listen_state()` call was made. -#### Examples +#### {% linkable_title Examples %} ```python entity, attribute, kwargs = self.info_listen_state(self.handle) ``` -## Scheduler +## {% linkable_title Scheduler %} AppDaemon contains a powerful scheduler that is able to run with 1 second resolution to fire off specific events at set times, or after set delays, or even relative to sunrise and sunset. In general, events should be fired less than a second after specified but under certain circumstances there may be short additional delays. -### About Schedule Callbacks +### {% linkable_title About Schedule Callbacks %} As with State Change callbacks, Scheduler Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: @@ -608,80 +607,80 @@ You can call the function whatever you like; you will reference it in the Schedu The parameters have the following meanings: -#### self +#### {% linkable_title self %} A standard Python object reference -#### \*\*kwargs +#### {% linkable_title \*\*kwargs %} A dictionary containing Zero or more keyword arguments to be supplied to the callback. -### Creation of Scheduler Callbacks +### {% linkable_title Creation of Scheduler Callbacks %} Scheduler callbacks are created through use of a number of convenience functions which can be used to suit the situation. -#### run_in() +#### {% linkable_title run_in() %} Run the callback in a defined number of seconds. This is used to add a delay, for instance a 60 second delay before a light is turned off after it has been triggered by a motion detector. This callback should always be used instead of `time.sleep()` as discussed previously. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_in(callback, delay, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### vcallback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### delay +##### {% linkable_title delay %} Delay, in seconds before the callback is invoked. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python self.handle = self.run_in(self.run_in_c) self.handle = self.run_in(self.run_in_c, title = "run_in5") ``` -#### run_once() +#### {% linkable_title run_once() %} Run the callback once, at the specified time of day. If the time of day is in the past, the callback will occur on the next day. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_once(callback, time, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### time +##### {% linkable_title time %} A Python `time` object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Run at 4pm today, or 4pm tomorrow if it is already after 4pm @@ -691,35 +690,35 @@ runtime = datetime.time(16, 0, 0) handle = self.run_once(self.run_once_c, runtime) ``` -#### run_at() +#### {% linkable_title run_at() %} Run the callback once, at the specified date and time. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_at(callback, datetime, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. `run_at()` will raise an exception if the specified time is in the past. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### datetime +##### {% linkable_title datetime %} A Python `datetime` object that specifies when the callback will occur. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Run at 4pm today @@ -730,35 +729,35 @@ today = datetime.date.today() event = datetime.datetime.combine(today, runtime) handle = self.run_once(self.run_once_c, event) ``` -#### run_daily() +#### {% linkable_title run_daily() %} Execute a callback at the same time every day. If the time has already passed, the function will not be invoked until the following day at the specified time. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_daily(callback, time, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### time +##### {% linkable_title time %} A Python `time` object that specifies when the callback will occur. If the time specified is in the past, the callback will occur the next day at the specified time. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Run daily at 7pm @@ -768,35 +767,35 @@ time = datetime.time(19, 0, 0) self.run_daily(self.run_daily_c, runtime) ``` -#### run_hourly() +#### {% linkable_title run_hourly() %} Execute a callback at the same time every hour. If the time has already passed, the function will not be invoked until the following hour at the specified time. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_hourly(callback, time = None, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### time +##### {% linkable_title time %} A Python `time` object that specifies when the callback will occur, the hour component of the time object is ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start an hour from the time that `run_hourly()` was executed. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Run every hour, on the hour @@ -805,35 +804,35 @@ import datetime time = datetime.time(0, 0, 0) self.run_daily(self.run_daily_c, runtime) ``` -#### run_minutely() +#### {% linkable_title run_minutely() %} Execute a callback at the same time every minute. If the time has already passed, the function will not be invoked until the following minute at the specified time. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_minutely(callback, time = None, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### time +##### {% linkable_title time %} A Python `time` object that specifies when the callback will occur, the hour and minute components of the time object are ignored. If the time specified is in the past, the callback will occur the next hour at the specified time. If time is not supplied, the callback will start a minute from the time that `run_minutely()` was executed. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Run Every Minute on the minute @@ -843,39 +842,39 @@ time = datetime.time(0, 0, 0) self.run_minutely(self.run_minutely_c, time) ``` -#### run_every() +#### {% linkable_title run_every() %} Execute a repeating callback with a configurable delay starting at a specific time. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_every(callback, time, repeat, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### time +##### {% linkable_title time %} A Python `time` object that specifies when the initial callback will occur. -##### repeat +##### {% linkable_title repeat %} After the initial callback has occurred, another will occur every `repeat` seconds. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Run every 17 minutes starting in 2 hours time @@ -884,42 +883,42 @@ import datetime self.run_every(self.run_every_c, time, 17 * 60) ``` -#### cancel_timer() +#### {% linkable_title cancel_timer() %} Cancel a previously created timer -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.cancel_timer(handle) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### handle +##### {% linkable_title handle %} A handle value returned from the original call to create the timer. -#### Examples +#### {% linkable_title Examples %} ```python self.cancel_timer(handle) ``` -### info_timer() +### {% linkable_title info_timer() %} Get information on a scheduler event from it's handle. -#### Synopsis +#### {% linkable_title Synopsis %} ```python time, interval, kwargs = self.info_timer(handle) ``` -#### Returns +#### {% linkable_title Returns %} time - datetime object representing the next time the callback will be fired @@ -927,21 +926,19 @@ interval - repeat interval if applicable, `0` otherwise. kwargs - the values supplied when the callback was initially created. -#### Parameters +#### {% linkable_title Parameters %} -##### handle +##### {% linkable_title handle %} The handle returned when the scheduler call was made. -#### Examples +#### {% linkable_title Examples %} ```python time, interval, kwargs = self.info_timer(handle) ``` - - -### Scheduler Ransomization +### {% linkable_title Scheduler Ransomization %} All of the scheduler calls above support 2 additional optional arguments, `random_start` and `random_end`. Using these arguments it is possible to randomize the firing of callbacks to the degree desired by setting the appropriate number of seconds with the parameters. @@ -961,39 +958,39 @@ self.handle = self.run_in(callback, 120, random_end = 60, **kwargs) self.handle = self.run_in(callback, 120, random_start = -60, random_end = 60, **kwargs) ``` -## Sunrise and Sunset +## {% linkable_title Sunrise and Sunset %} AppDaemon has a number of features to allow easy tracking of sunrise and sunset as well as a couple of scheduler functions. Note that the scheduler functions also support the randomization parameters described above, but they cannot be used in conjunction with the `offset` parameter`. -### run_at_sunrise() +### {% linkable_title run_at_sunrise() %} Run a callback at or around sunrise. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_at_sunrise(callback, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### offset = +##### {% linkable_title offset = %} The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with `random_start` or `random_end` -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python import datetime @@ -1008,35 +1005,35 @@ self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 60*60, "Sunris self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 30*60, "Sunrise, random - 30 - 60 mins") ``` -### run_at_sunset() +### {% linkable_title run_at_sunset() %} Run a callback at or around sunset. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.handle = self.run_at_sunset(callback, offset, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the timer. -#### Parameters +#### {% linkable_title Parameters %} -##### callback +##### {% linkable_title callback %} Function to be invoked when the requested state change occurs. It must conform to the standard Scheduler Callback format documented above. -##### offset = +##### {% linkable_title offset = %} The time in seconds that the callback should be delayed after sunrise. A negative value will result in the callback occurring before sunrise. This parameter cannot be combined with `random_start` or `random_end` -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Arbitary keyword parameters to be provided to the callback function when it is invoked. -#### Examples +#### {% linkable_title Examples %} ```python # Example using timedelta @@ -1050,122 +1047,123 @@ self.run_at_sunset(self.sun, random_start = -60*60, random_end = 60*60, "Sunset, # Run at a random time between 30 and 60 minutes before sunset self.run_at_sunset(self.sun, random_start = -60*60, random_end = 30*60, "Sunset, random - 30 - 60 mins") ``` -### sunrise() +### {% linkable_title sunrise() %} Return the time that the next Sunrise will occur. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.sunrise() ``` -#### Returns +#### {% linkable_title Returns %} A Python datetime that represents the next time Sunrise will occur. -#### Examples +#### {% linkable_title Examples %} ```python rise_time = self.sunrise() ``` -### sunset() +### {% linkable_title sunset() %} Return the time that the next Sunset will occur. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.sunset() ``` -#### Returns +#### {% linkable_title Returns %} A Python datetime that represents the next time Sunset will occur. -#### Examples +#### {% linkable_title Examples %} ```python set_time = self.sunset() ``` -### sun_up() +### {% linkable_title sun_up() %} A function that allows you to determine if the sun is currently up. -#### Synopsis +#### {% linkable_title Synopsis %} ```python result = self.sun_up() ``` -#### Returns +#### {% linkable_title Returns %} `True` if the sun is up, False otherwise. -#### Examples +#### {% linkable_title Examples %} ```python if self.sun_up(): do something ``` -### sun_down() +### {% linkable_title sun_down() %} A function that allows you to determine if the sun is currently down. -#### Synopsis +#### {% linkable_title Synopsis %} ```python result = self.sun_down() ``` -#### Returns +#### {% linkable_title Returns %} `True` if the sun is down, False otherwise. -#### Examples +#### {% linkable_title Examples %} ```python if self.sun_down(): do something ``` -## Calling Services -### About Services +## {% linkable_title Calling Services %} + +### {% linkable_title About Services %} Services within Home Assistant are how changes are made to the system and its devices. Services can be used to turn lights on and off, set thermostats and a whole number of other things. Home Assistant supplies a single interface to all these disparate services that take arbitrary parameters. AppDaemon provides the `call_service()` function to call into Home Assistant and run a service. In addition, it also provides convenience functions for some of the more common services making calling them a little easier. -### call_service() +### {% linkable_title call_service() %} Call service is the basic way of calling a service within AppDaemon. It can call any service and provide any required parameters. Available services can be found using the developer tools in the UI. For listed services, the part before the first period is the domain, and the part after is the service name. For instance, `light.turn_on` has a domain of `light` and a service name of `turn_on`. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.call_service(self, service, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### service +##### {% linkable_title service %} The service name, e.g. `light.turn_on`. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Each service has different parameter requirements. This argument allows you to specify a comma separated list of keyword value pairs, e.g. `entity_id = light.office_1`. These parameters will be different for every service and can be discovered using the developer tools. Most if not all service calls require an `entity_id` however, so use of the above example is very common with this call. -#### Examples +#### {% linkable_title Examples %} ```python self.call_service("light.turn_on", entity_id = "light/office_lamp", color_name = "red") self.call_service("notify/notify", title = "Hello", message = "Hello World") ``` -### turn_on() +### {% linkable_title turn_on() %} This is a convenience function for the `homassistant.turn_on` function. It is able to turn on pretty much anything in Home Assistant that can be turned on or run: @@ -1176,27 +1174,27 @@ This is a convenience function for the `homassistant.turn_on` function. It is ab And many more. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.turn_on(entity_id, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Fully qualified entity_id of the thing to be turned on, e.g. `light.office_lamp` or ```scene.downstairs_on``` -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} A comma separated list of key value pairs to allow specification of parameters over and above `entity_id`. -#### Examples +#### {% linkable_title Examples %} ```python self.turn_on("switch.patio_lights") @@ -1204,152 +1202,152 @@ self.turn_on("scene.bedrrom_on") self.turn_on("light.office_1", color_name = "green") ``` -### turn_off() +### {% linkable_title turn_off() %} This is a convenience function for the `homassistant.turn_off` function. Like `homeassistant.turn_on`, it is able to turn off pretty much anything in Home Assistant that can be turned off. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.turn_off(entity_id) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Fully qualified entity_id of the thing to be turned off, e.g. `light.office_lamp` or `scene.downstairs_on`. -#### Examples +#### {% linkable_title Examples %} ```python self.turn_off("switch.patio_lights") self.turn_off("light.office_1") ``` -### toggle() +### {% linkable_title toggle() %} This is a convenience function for the `homassistant.toggle` function. It is able to flip the state of pretty much anything in Home Assistant that can be turned on or off. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.toggle(entity_id) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Fully qualified entity_id of the thing to be toggled, e.g. `light.office_lamp` or `scene.downstairs_on`. -#### Examples +#### {% linkable_title Examples %} ```python self.toggle("switch.patio_lights") self.toggle("light.office_1", color_name = "green") ``` -### select_value() +### {% linkable_title select_value() %} This is a convenience function for the `input_slider.select_value` function. It is able to set the value of an input_slider in Home Assistant. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.select_value(entity_id, value) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Fully qualified entity_id of the input_slider to be changed, e.g. `input_slider.alarm_hour`. -##### value +##### {% linkable_title value %} The new value to set the input slider to. -#### Examples +#### {% linkable_title Examples %} ```python self.select_value("input_slider.alarm_hour", 6) ``` -### select_option() +### {% linkable_title select_option() %} This is a convenience function for the `input_select.select_option` function. It is able to set the value of an input_select in Home Assistant. -#### Synopsis +#### {% linkable_title Synopsis %} ```python self.select_option(entity_id, option) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Fully qualified entity_id of the input_select to be changed, e.g. `input_select.mode`. -##### value +##### {% linkable_title value %} The new value to set the input slider to. -#### Examples +#### {% linkable_title Examples %} ```python self.select_option("input_select.mode", "Day") ``` -### notify() +### {% linkable_title notify() %} This is a convenience function for the `notify.notify` service. It will send a notification to your defualt notification service. If you have more than one, use `call_service()` to call the specific notification service you require instead. -#### Synopsis +#### {% linkable_title Synopsis %} ```python notify(message, title=None) ``` -#### Returns +#### {% linkable_title Returns %} None -#### Parameters +#### {% linkable_title Parameters %} -##### message +##### {% linkable_title message %} Message to be sent to the notification service. -##### title +##### {% linkable_title title %} Title of the notification - optional. -#### Examples +#### {% linkable_title Examples %} ```python self.notify("", "Switching mode to Evening") ``` -## Events +## {% linkable_title Events %} -### About Events +### {% linkable_title About Events %} Events are a fundamental part of how Home Assistant works under the covers. HA has an event bus that all components can read and write to, enabling components to inform other components when important events take place. We have already seen how state changes can be propagated to AppDaemon - a state change however is merely an example of an event within Home Assistant. There are several other event types, among them are: @@ -1369,7 +1367,7 @@ In addition to the Home Assistant supplied events, AppDaemon adds 2 more events. - `appd_started` - fired once when AppDaemon is first started and after Apps are initialized - `ha_started` - fired every time AppDaemon detects a Home Assistant restart -### About Event Callbacks +### {% linkable_title About Event Callbacks %} As with State Change and Scheduler callbacks, Event Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: @@ -1382,46 +1380,46 @@ You can call the function whatever you like - you will reference it in the Sched The parameters have the following meanings: -#### self +#### {% linkable_title self %} A standard Python object reference. -#### event_name +#### {% linkable_title event_name %} Name of the event that was called, e.g. `call_service`. -#### data +#### {% linkable_title data %} Any data that the system supplied with the event as a dict. -#### kwargs +#### {% linkable_title kwargs %} A dictionary containing Zero or more user keyword arguments to be supplied to the callback. -### listen_event() +### {% linkable_title listen_event() %} Listen event sets up a callback for a specific event, or any event. -#### Synopsis +#### {% linkable_title Synopsis %} ```python handle = listen_event(function, event = None, **kwargs): ``` -#### Returns +#### {% linkable_title Returns %} A handle that can be used to cancel the callback. -#### Parameters +#### {% linkable_title Parameters %} -##### function +##### {% linkable_title function %} The function to be called when the event is fired. -##### event +##### {% linkable_title event %} Name of the event to subscribe to. Can be a standard Home Assistant event such as `service_registered` or an arbitrary custom event such as `"MODE_CHANGE"`. If no event is specified, `listen_event()` will subscribe to all events. -##### \*\*kwargs (optional) +##### {% linkable_title \*\*kwargs (optional) %} One or more keyword value pairs representing App specific parameters to supply to the callback. If the keywords match values within the event data, they will act as filters, meaning that if they don't match the values, the callback will not fire. @@ -1429,7 +1427,8 @@ As an example of this, a Minimote controller when activated will generate an eve Filtering will work with any event type, but it will be necessary to figure out the data associated with the event to understand what values can be filtered on. This can be achieved by examining Home Assistant's logfiles when the event fires. -#### Examples +#### {% linkable_title Examples %} + ```python self.listen_event(self.mode_event, "MODE_CHANGE") # Listen for a minimote event activating scene 3: @@ -1438,89 +1437,89 @@ self.listen_event(self.generic_event, "zwave.scene_activated", scene_id = 3) self.listen_event(self.generic_event, "zwave.scene_activated", entity_id = "minimote_31", scene_id = 3) ``` -### cancel_listen_event() +### {% linkable_title cancel_listen_event() %} Cancels callbacks for a specific event. -#### Synopsis +#### {% linkable_title Synopsis %} ```python cancel_listen_event(handle) ``` -#### Returns +#### {% linkable_title Returns %} None. -#### Parameters +#### {% linkable_title Parameters %} ##### handle A handle returned from a previous call to `listen_event()`. -#### Examples +#### {% linkable_title Examples %} ```python self.cancel_listen_event(handle) ``` -### info_listen_event() +### {% linkable_title info_listen_event() %} Get information on an event callback from it's handle. -#### Synopsis +#### {% linkable_title Synopsis %} ```python service, kwargs = self.info_listen_event(handle) ``` -#### Returns +#### {% linkable_title Returns %} service, kwargs - the values supplied when the callback was initially created. -#### Parameters +#### {% linkable_title Parameters %} -##### handle +##### {% linkable_title handle %} The handle returned when the `listen_event()` call was made. -#### Examples +#### {% linkable_title Examples %} ```python service, kwargs = self.info_listen_event(handle) ``` -### fire_event() +### {% linkable_title fire_event() %} Fire an event on the HomeAssistant bus, for other components to hear. -#### Synopsis +#### {% linkable_title Synopsis %} ```python fire_event(event, **kwargs) ``` -#### Returns +#### {% linkable_title Returns %} None. -#### Parameters +#### {% linkable_title Parameters %} -##### event +##### {% linkable_title event %} Name of the event. Can be a standard Home Assistant event such as `service_registered` or an arbitrary custom event such as `"MODE_CHANGE"`. -##### \*\*kwargs +##### {% linkable_title \*\*kwargs %} Zero or more keyword arguments that will be supplied as part of the event. -#### Examples +#### {% linkable_title Examples %} ```python self.fire_event("MY_CUSTOM_EVENT", jam="true") ``` -### Event Callback Function Signature +### {% linkable_title Event Callback Function Signature %} Functions called as an event callback will be supplied with 2 arguments: @@ -1528,15 +1527,15 @@ Functions called as an event callback will be supplied with 2 arguments: def service(self, event_name, data): ``` -#### event_name +#### {% linkable_title event_name %} The name of the event that caused the callback, e.g. `"MODE_CHANGE"` or `call_service`. -#### data +#### {% linkable_title data %} A dictionary containing any additional information associated with the event. -### Use of Events for Signalling between Home Assistant and AppDaemon +### {% linkable_title Use of Events for Signalling between Home Assistant and AppDaemon %} Home Assistant allows for the creation of custom events and existing components can send and receive them. This provides a useful mechanism for signaling back and forth between Home Assistant and AppDaemon. For instance, if you would like to create a UI Element to fire off some code in Home Assistant, all that is necessary is to create a script to fire a custom event, then subscribe to that event in AppDaemon. The script would look something like this: @@ -1571,24 +1570,24 @@ This can be triggered with a call to AppDaemon's fire_event() as follows: self.fire_event("MODE_CHANGE", mode = "Day") ``` -## Presence +## {% linkable_title Presence %} Presence in Home Assistant is tracked using Device Trackers. The state of all device trackers can be found using the `get_state()` call, however AppDaemon provides several convenience functions to make this easier. -### get_trackers() +### {% linkable_title get_trackers() Return a list of all device trackers. This is designed to be iterated over. -#### Synopsis +#### {% linkable_title Synopsis %} ```python tracker_list = get_trackers() ``` -#### Returns +#### {% linkable_title Returns %} An iterable list of all device trackers. -#### Examples +#### {% linkable_title Examples %} ```python trackers = self.get_trackers() @@ -1596,7 +1595,7 @@ for tracker in trackers: do something ``` -### get_tracker_state() +### {% linkable_title get_tracker_state() %} Get the state of a tracker. The values returned depend in part on the configuration and type of device trackers in the system. Simpler tracker types like `Locative` or `NMAP` will return one of 2 states: @@ -1605,23 +1604,23 @@ Get the state of a tracker. The values returned depend in part on the configurat Some types of device tracker are in addition able to supply locations that have been configured as Geofences, in which case the name of that location can be returned. -#### Synopsis +#### {% linkable_title Synopsis %} ```python location = self.get_tracker_state(tracker_id) ``` -#### Returns +#### {% linkable_title Returns %} A string representing the location of the tracker. -#### Parameters +#### {% linkable_title Parameters %} -##### tracker_id +##### {% linkable_title tracker_id %} Fully qualified entity_id of the device tracker to query, e.g. `device_tracker.andrew`. -#### Examples +#### {% linkable_title Examples %} ```python trackers = self.get_trackers() @@ -1629,187 +1628,187 @@ for tracker in trackers: self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) ``` -### everyone_home() +### {% linkable_title everyone_home() %} A convenience function to determine if everyone is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. -#### Synopsis +#### {% linkable_title Synopsis %} ```python result = self.everyone_home() ``` -#### Returns +#### {% linkable_title Returns %} Returns `True` if everyone is at home, `False` otherwise. -#### Examples +#### {% linkable_title Examples %} ```python if self.everyone_home(): do something ``` -### anyone_home() +### {% linkable_title anyone_home() %} A convenience function to determine if one or more person is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. -#### Synopsis +#### {% linkable_title Synopsis %} ```python result = self.anyone_home() ``` -#### Returns +#### {% linkable_title Returns %} Returns `True` if anyone is at home, `False` otherwise. -#### Examples +#### {% linkable_title Examples %} ```python if self.anyone_home(): do something ``` -### noone_home() +### {% linkable_title noone_home() %} A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers. -#### Synopsis +#### {% linkable_title Synopsis %} ```python result = self.noone_home() ``` -#### Returns +#### {% linkable_title Returns %} Returns `True` if no one is home, `False` otherwise. -#### Examples +#### {% linkable_title Examples %} ```python if self.noone_home(): do something ``` -## Miscellaneous Helper Functions +## {% linkable_title Miscellaneous Helper Functions %} -### time() +### {% linkable_title time() %} Returns a python `time` object representing the current time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. -#### Synopsis +#### {% linkable_title Synopsis %} ```python time() ``` -#### Returns +#### {% linkable_title Returns %} A localised Python time object representing the current AppDaemon time. -#### Parameters +#### {% linkable_title Parameters %} None -#### Example +#### {% linkable_title Example %} ```python now = self.time() ``` -### date() +### {% linkable_title date() %} Returns a python `date` object representing the current date. Use this in preference to the standard Python ways to discover the current date, especially when using the "Time Travel" feature for testing. -#### Synopsis +#### {% linkable_title Synopsis %} ```python date() ``` -#### Returns +#### {% linkable_title Returns %} A localised Python time object representing the current AppDaemon date. -#### Parameters +#### {% linkable_title Parameters %} None -#### Example +#### {% linkable_title Example %} ```python today = self.date() ``` -### datetime() +### {% linkable_title datetime() %} Returns a python `datetime` object representing the current date and time. Use this in preference to the standard Python ways to discover the current time, especially when using the "Time Travel" feature for testing. -#### Synopsis +#### {% linkable_title Synopsis %} ```python datetime() ``` -#### Returns +#### {% linkable_title Returns %} A localised Python datetime object representing the current AppDaemon date and time. -#### Parameters +#### {% linkable_title Parameters %} None -#### Example +#### {% linkable_title Example %} ```python now = self.datetime() ``` -### convert_utc() +### {% linkable_title convert_utc() %} Home Assistant provides timestamps of several different sorts that may be used to gain additional insight into state changes. These timestamps are in UTC and are coded as ISO 8601 Combined date and time strings. `convert_utc()` will accept one of these strings and convert it to a localised Python datetime object representing the timestamp -#### Synopsis +#### {% linkable_title Synopsis %} ```python convert_utc(utc_string) ``` -#### Returns +#### {% linkable_title Returns %} `convert_utc(utc_string)` returns a localised Python datetime object representing the timestamp. -#### Parameters +#### {% linkable_title Parameters %} -##### utc_string +##### {% linkable_title utc_string %} An ISO 8601 encoded date and time string in the following format: `2016-07-13T14:24:02.040658-04:00` -#### Example +#### {% linkable_title Example %} -### parse_time() +###{% linkable_title parse_time() %} Takes a string representation of a time, or sunrise or sunset offset and converts it to a `datetime.time` object. -#### Synopsis +#### {% linkable_title Synopsis %} ```python parse_time(time_string) ``` -#### Returns +#### {% linkable_title Returns %} A `datetime.time` object, representing the time given in the `time_string` argument. -#### Parameters +#### {% linkable_title Parameters %} -##### time_string +##### {% linkable_title time_string %} A representation of the time in a string format with one of the following formats: - HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. - sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds -#### Example +#### {% linkable_title Example %} ```python time = self.parse_time("17:30:00") @@ -1818,30 +1817,30 @@ time = self.parse_time("sunset + 00:30:00") time = self.parse_time("sunrise + 01:00:00") ``` -### now_is_between() +### {% linkable_title now_is_between() %} Takes two string representations of a time, or sunrise or sunset offset and returns true if the current time is between those 2 times. `now_is_between()` can correctly handle transitions across midnight. -#### Synopsis +#### {% linkable_title Synopsis %} ```python now_is_between(start_time_string, end_time_string) ``` -#### Returns +#### {% linkable_title Returns %} `True` if the current time is within the specified start and end times, `False` otherwise. -#### Parameters +#### {% linkable_title Parameters %} -##### start_time_string, end_time_string +##### {% linkable_title start_time_string, end_time_string %} A representation of the start and end time respectively in a string format with one of the following formats: - HH:MM:SS - the time in Hours Minutes and Seconds, 24 hour format. - sunrise | sunset [+ | - HH:MM:SS]- time of the next sunrise or sunset with an optional positive or negative offset in Hours Minutes and seconds -#### Example +#### {% linkable_title Example %} ```python if self.now_is_between("17:30:00", "08:00:00"): @@ -1850,48 +1849,48 @@ if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"): do something ``` -### friendly_name() +### {% linkable_title friendly_name() %} `frindly_name()` will return the Friendly Name of an entity if it has one. -#### Synopsis +#### {% linkable_title Synopsis %} ```python Name = self.friendly_name(entity_id) ``` -#### Returns +#### {% linkable_title Returns %} The friendly name of the entity if it exists or the entity id if not. -#### Example +#### {% linkable_title Example %} ```python tracker = "device_tracker.andrew" self.log("{} ({}) is {}".format(tracker, self.friendly_name(tracker), self.get_tracker_state(tracker))) ``` -### split_entity() +### {% linkable_title split_entity() %} `split_entity()` will take a fully qualified entity id of the form `light.hall_light` and split it into 2 values, the device and the entity, e.g. `light` and `hall_light`. -#### Synopsis +#### {% linkable_title Synopsis %} ```python device, entity = self.split_entity(entity_id) ``` -#### Parameters +#### {% linkable_title Parameters %} -##### entity_id +##### {% linkable_title entity_id %} Fully qualified entity id to be split. -#### Returns +#### {% linkable_title Returns %} A list with 2 entries, the device and entity respectively. -#### Example +#### {% linkable_title Example %} ```python device, entity = self.split_entity(entity_id) @@ -1900,46 +1899,46 @@ if device == "scene": ``` -### get_app() +### {% linkable_title get_app() %} `get_app()` will return the instantiated object of another app running within the system. This is useful for calling functions or accessing variables that reside in different apps without requiring duplication of code. -#### Synopsis +#### {% linkable_title Synopsis %} ```python get_app(self, name) ``` -#### Parameters +#### {% linkable_title Parameters %} -##### name +##### {% linkable_title name %} Name of the app required. This is the name specified in header section of the config file, not the module or class. -#### Returns +#### {% linkable_title Returns %} An object reference to the class. -#### Example +#### {% linkable_title Example %} ```python MyApp = self.get_app("MotionLights") MyApp.turn_light_on() ``` -### split_device_list() +### {% linkable_title split_device_list() %} `split_device_list()` will take a comma separated list of device types (or anything else for that matter) and return them as an iterable list. This is intended to assist in use cases where the App takes a list of entities from an argument, e.g. a list of sensors to monitor. If only one entry is provided, an iterable list will still be returned to avoid the need for special processing. -#### Synopsis +#### {% linkable_title Synopsis %} ```python devices = split_device_list(list) ``` -#### Returns +#### {% linkable_title Returns %} A list of split devices with 1 or more entries. -#### Example +#### {% linkable_title Example %} ```python for sensor in self.split_device_list(self.args["sensors"]): @@ -1947,68 +1946,68 @@ for sensor in self.split_device_list(self.args["sensors"]): ``` -### Writing to Logfiles +### {% linkable_title Writing to Logfiles %} AppDaemon uses 2 separate logs - the general log and the error log. An AppDaemon App can write to either of these using the supplied convenience methods `log()` and `error()`, which are provided as part of parent `AppDaemon` class, and the call will automatically pre-pend the name of the App making the call. The `-D` option of AppDaemon can be used to specify what level of logging is required and the logger objects will work as expected. -### log() +### {% linkable_title log() %} -#### Synopsis +#### {% linkable_title Synopsis %} ```python log(message, level = "INFO") ``` -#### Returns +#### {% linkable_title Returns %} Nothing -#### Parameters +#### {% linkable_title Parameters %} -##### Message +##### {% linkable_title Message %} The message to log. -##### level +##### {% linkable_title level %} The log level of the message - takes a string representing the standard logger levels. -#### Examples +#### {% linkable_title Examples %} ```python self.log("Log Test: Parameter is {}".format(some_variable)) self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") ``` -### error() +### {% linkable_title error() %} -#### Synopsis +#### {% linkable_title Synopsis %} ```python error(message, level = "WARNING") ``` -#### Returns +#### {% linkable_title Returns %} Nothing -#### Parameters +#### {% linkable_title Parameters %} -##### Message +##### {% linkable_title Message %} The message to log. -##### level +##### {% linkable_title level %} The log level of the message - takes a string representing the standard logger levels. -#### Examples +#### {% linkable_title Examples %} ```python self.error("Some Warning string") self.error("Some Critical string", level = "CRITICAL") ``` -## Sharing information between Apps +## {% linkable_title Sharing information between Apps %} Sharing information between different Apps is very simple if required. Each app gets access to a global dictionary stored in a class attribute called `self.global_vars`. Any App can add or read any key as required. This operation is not however threadsafe so some car is needed. @@ -2040,7 +2039,7 @@ Then access it as follows: my_global_var = conf.config["AppDaemon"]["global_var"] ``` -## Development Workflow +## {% linkable_title Development Workflow %} Developing Apps is intended to be fairly simple but is an exercise in programming like any other kind of Python programming. As such, it is expected that apps will contain syntax errors and will generate exceptions during the development process. AppDaemon makes it very easy to iterate through the development process as it will automatically reload code that has changed and also will reload code if any of the parameters in the configuration file change as well. @@ -2054,11 +2053,11 @@ With this setup, you will see that every time you write the file, AppDaemon will If there is an error in the compilation or a runtime error, this will be directed to the `error.log` file to enable you to see the error and correct it. When an error occurs, there will also be a warning message in `appdaemon.log` to tell you to check the error log. -## Time Travel +## {% linkable_title Time Travel %} OK, time travel sadly isn't really possible but it can be very useful when testing Apps. For instance, imagine you have an App that turns a light on every day at sunset. It might be nice to test it without waiting for Sunset - and with AppDaemon's "Time Travel" features you can. -### Choosing a Start Time +### {% linkable_title Choosing a Start Time %} Internally, AppDaemon keeps track of it's own time relative to when it was started. This make is possible to start AppDaemon with a different start time and date to the current time. For instance to test that sunset App, start AppDaemon at a time just before sunset and see if it works as expected. To do this, simply use the "-s" argument on AppDaemon's command line. e,g,: @@ -2072,7 +2071,7 @@ $ appdaemon -s "2016-06-06 19:16:00" Note the timestamps in the log - AppDaemon believes it is now just before sunset and will process any callbacks appropriately. -### Speeding things up +### {% linkable_title Speeding things up %} Some Apps need to run for periods of a day or two for you to test all aspects. This can be time consuming, but Time Travel can also help here in two ways. The first is by speeding up time. To do this, simply use the `-t` option on the command line. This specifies the amount of time a second lasts while time travelling. The default of course is 1 second, but if you change it to `0.1` for instance, AppDaemon will work 10x faster. If you set it to `0`, AppDaemon will work as fast as possible and, depending in your hardware, may be able to get through an entire day in a matter of minutes. Bear in mind however, due to the threaded nature of AppDaemon, when you are running with `-t 0` you may see actual events firing a little later than expected as the rest of the system tries to keep up with the timer. To set the tick time, start AppDaemon as follows: @@ -2105,6 +2104,6 @@ $ appdaemon -s "2016-06-06 19:16:00" -s "2016-06-06 20:16:00" -t 0 ``` -### A Note on Times +### {% linkable_title A Note on Times %} -Some Apps you write may depend on checking times of events relative to the current time. If you are time travelling this will not work if you use standard python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied `time()`, `date()` and `datetime()` calls, documented earlier. These calls will consult with AppDaemon's internal time rather than the actual time and give you the correct values. \ No newline at end of file +Some Apps you write may depend on checking times of events relative to the current time. If you are time travelling this will not work if you use standard python library calls to get the current time and date etc. For this reason, always use the AppDamon supplied `time()`, `date()` and `datetime()` calls, documented earlier. These calls will consult with AppDaemon's internal time rather than the actual time and give you the correct values. diff --git a/source/_ecosystem/appdaemon/configuration.markdown b/source/_ecosystem/appdaemon/configuration.markdown index d17504ea4ed..27aac6fd82e 100644 --- a/source/_ecosystem/appdaemon/configuration.markdown +++ b/source/_ecosystem/appdaemon/configuration.markdown @@ -43,7 +43,7 @@ class = HelloWorld The `#Apps` section is the configuration for the Hello World program and should be left in place for initial testing but can be removed later if desired, as other Apps are added, App configuration is described in the [API doc](API.md). -## Docker +## {% linkable_title Docker %} For Docker Configuration you need to take a couple of extra things into consideration. @@ -77,4 +77,4 @@ elevation = ``` -You can run Docker and point the conf volume to that directory. \ No newline at end of file +You can run Docker and point the conf volume to that directory. diff --git a/source/_ecosystem/appdaemon/installation.markdown b/source/_ecosystem/appdaemon/installation.markdown index f313035ae49..14f46148441 100644 --- a/source/_ecosystem/appdaemon/installation.markdown +++ b/source/_ecosystem/appdaemon/installation.markdown @@ -11,9 +11,9 @@ regenerate: true hide_github_edit: true --- -Installation is either by pip3 or Docker. +Installation is either by `pip3` or Docker. -## Clone the Repository +## {% linkable_title Clone the Repository %} For either method you will need to clone the **AppDaemon** repository to the current local directory on your machine. @@ -27,7 +27,7 @@ Change your working directory to the repository root. Moving forward, we will be $ cd appdaemon ``` -## Install using Docker +## {% linkable_title Install using Docker %} To build the Docker image run the following: @@ -37,7 +37,7 @@ $ docker build -t appdaemon . (Note the period at the end of the above command) -## Install Using PIP3 +## {% linkable_title Install using `pip3` %} Before running `AppDaemon` you will need to install the package: diff --git a/source/_ecosystem/appdaemon/operation.markdown b/source/_ecosystem/appdaemon/operation.markdown index e928ec4babd..499bca70ef3 100644 --- a/source/_ecosystem/appdaemon/operation.markdown +++ b/source/_ecosystem/appdaemon/operation.markdown @@ -11,4 +11,4 @@ regenerate: true hide_github_edit: true --- -Since AppDaemon under the covers uses the exact same APIs as the frontend UI, you typically see it react at about the same time to a given event. Calling back to Home Assistant is also pretty fast especially if they are running on the same machine. In action, observed latency above the built in automation component is usually sub-second. +Since `AppDaemon` under the covers uses the exact same APIs as the frontend UI, you typically see it react at about the same time to a given event. Calling back to Home Assistant is also pretty fast especially if they are running on the same machine. In action, observed latency above the built in automation component is usually sub-second. diff --git a/source/_ecosystem/appdaemon/running.markdown b/source/_ecosystem/appdaemon/running.markdown index 62e8718f9b8..f447a73895d 100755 --- a/source/_ecosystem/appdaemon/running.markdown +++ b/source/_ecosystem/appdaemon/running.markdown @@ -11,9 +11,9 @@ regenerate: true hide_github_edit: true --- -As configured, AppDaemon comes with a single HelloWorld App that will send a greeting to the logfile to show that everything is working correctly. +As configured, `AppDaemon` comes with a single HelloWorld App that will send a greeting to the logfile to show that everything is working correctly. -## Docker +## {% linkable_title Docker %} Assuming you have set the config up as described above for Docker, you can run it with the command: @@ -42,7 +42,7 @@ $ docker logs appdaemon Note that for Docker, the error and regular logs are combined. -## PIP3 +## {% linkable_title `pip3` %} You can then run AppDaemon from the command line as follows: @@ -61,7 +61,7 @@ $ appdaemon -c conf/appdaemon.cfg 2016-08-22 10:08:16,584 INFO You are now ready to run Apps! ``` -## AppDaemon arguments +## {% linkable_title AppDaemon arguments %} ``` usage: appdaemon [-h] [-c CONFIG] [-p PIDFILE] [-t TICK] [-s STARTTIME] @@ -87,8 +87,8 @@ optional arguments: -d, --daemon run as a background process ``` --c is the path to the configuration file. If not specified, AppDaemon will look for a file named `appdaemon.cfg` first in `~/.homeassistant` then in `/etc/appdaemon`. If the file is not specified and it is not found in either location, AppDaemon will raise an exception. - +-c is the path to the configuration file. If not specified, AppDaemon will look for a file named `appdaemon.cfg` first in `~/.homeassistant` then in `/etc/appdaemon`. If the file is not specified and it is not found in either location, AppDaemon will raise an exception. + -d and -p are used by the init file to start the process as a daemon and are not required if running from the command line. -D can be used to increase the debug level for internal AppDaemon operations as well as apps using the logging function. diff --git a/source/_ecosystem/appdaemon/tutorial.markdown b/source/_ecosystem/appdaemon/tutorial.markdown index 7c23e38a95d..fe9f6ee8718 100755 --- a/source/_ecosystem/appdaemon/tutorial.markdown +++ b/source/_ecosystem/appdaemon/tutorial.markdown @@ -11,7 +11,7 @@ regenerate: true hide_github_edit: true --- -## Another Take on Automation +## {% linkable_title Another Take on Automation %} If you haven't yet read Paulus' excellent Blog entry on [Perfect Home Automation](https://home-assistant.io/blog/2016/01/19/perfect-home-automation/) I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the "Automation" in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation in bring this all together in the vast and chaotic ecosystem that is the "Internet of Things". @@ -38,11 +38,11 @@ So why `AppDaemon`? AppDaemon is not meant to replace Home Assistant Automations It is in fact a testament to Home Assistant's open nature that a component like `AppDaemon` can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant's underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for `AppDaemon` - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier. -## How it Works +## {% linkable_title How it Works %} The best way to show what AppDaemon does is through a few simple examples. -### Sunrise/Sunset Lighting +### {% linkable_title Sunrise/Sunset Lighting %} Lets start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its `initialize()` function called which gives it a chance to register a callback for AppDaemons's scheduler for a specific time. In this case we are using `run_at_sunrise()` and `run_at_sunset()` to register 2 separate callbacks. The argument `0` is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals it can be convenient to use Python's `datetime.timedelta` class for calculations. When sunrise or sunset occurs, the appropriate callback function, `sunrise_cb()` or `sunset_cb()` is called which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables `args["on_scene"]` and `args["off_scene"]` are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App. @@ -127,4 +127,3 @@ If this has whet your appetite, feel free to give it a try. Happy Automating! - diff --git a/source/_ecosystem/appdaemon/windows.markdown b/source/_ecosystem/appdaemon/windows.markdown index 9b443f77534..3ec32879838 100755 --- a/source/_ecosystem/appdaemon/windows.markdown +++ b/source/_ecosystem/appdaemon/windows.markdown @@ -18,6 +18,6 @@ AppDaemon runs under windows and has been tested with the official 3.5.2 release AppDaemon can be installed exactly as per the instructions for every other version using pip3. -## Windows Under the Linux Subsystem +## {% linkable_title Windows Under the Linux Subsystem %} -Windows 10 now supports a full Linux bash environment that is capable of running Python. This is essentially an Ubuntu distribution and works extremely well. It is possible to run AppDaemon in exactly the same way as for Linux distributions, and none of the above Windows Caveats apply to this version. This is the reccomended way to run AppDaemon in a Windows 10 and later environment. \ No newline at end of file +Windows 10 now supports a full Linux bash environment that is capable of running Python. This is essentially an Ubuntu distribution and works extremely well. It is possible to run AppDaemon in exactly the same way as for Linux distributions, and none of the above Windows Caveats apply to this version. This is the reccomended way to run AppDaemon in a Windows 10 and later environment. From c6d4101536c39fb0129d81e8c53d92d7ffb17b63 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 10:41:05 +0100 Subject: [PATCH 010/123] Update configuration sample --- source/_components/alarm_control_panel.manual.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown index 2b6746cbaea..fd1807019fd 100644 --- a/source/_components/alarm_control_panel.manual.markdown +++ b/source/_components/alarm_control_panel.manual.markdown @@ -18,7 +18,7 @@ This platform enables you to set manual alarms in Home Assistant. ```yaml # Example configuration.yaml entry alarm_control_panel: - platform: manual + - platform: manual ``` Configuration variables: From 50bb203de39b56b1216902f26c7e096a62e5abbf Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 10:42:18 +0100 Subject: [PATCH 011/123] Fix link --- .../_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index 9790da7ddc8..31c8cbe2a2f 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -121,7 +121,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [vlc-media]: https://home-assistant.io/components/media_player.vlc/ [aquostv]: https://home-assistant.io/components/media_player.aquostv/ [digitalloggers]: https://home-assistant.io/components/switch.digitalloggers/ -[netdata]: https://home-assistant.io/components/switch.digitalloggers/ +[netdata]: https://home-assistant.io/components/sensor.netdata/ [bl-sensor]: https://home-assistant.io/components/sensor.broadlink/ [bl-switch]: https://home-assistant.io/components/switch.broadlink/ [hikvision]: https://home-assistant.io/components/binary_sensor.hikvision/ From 19cc13df72b54719ce6f6e8b6918dcfbb9c671fa Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 11:02:33 +0100 Subject: [PATCH 012/123] Fix liquid errors --- source/_ecosystem/appdaemon/api.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_ecosystem/appdaemon/api.markdown b/source/_ecosystem/appdaemon/api.markdown index 346c0546881..8615d751248 100755 --- a/source/_ecosystem/appdaemon/api.markdown +++ b/source/_ecosystem/appdaemon/api.markdown @@ -72,7 +72,7 @@ class NightLight(appapi.AppDaemon): To summarize - an App's lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That's all there is to it! -## {% linkable_title About the API +## {% linkable_title About the API %} The implementation of the API is located in the AppDaemon class that Apps are derived from. The code for the functions is therefore available to the App simply by invoking the name of the function from the object namespace using the `self` keyword, as in the above examples. `self.turn_on()` for example is just a method defined in the parent class and made available to the child. This design decision was made to simplify some of the implementation and hide passing of unnecessary variables during the API invocation. @@ -289,7 +289,7 @@ get_state(entity = None, attribute = None) `get_state()` returns a `dictionary` or single value, the structure of which varies according to the parameters used. -#### {% linkable_title Parameters +#### {% linkable_title Parameters %} All parameters are optional, and if `get_state()` is called with no parameters it will return the entire state of Home Assistant at that given time. This will consist of a dictionary with a key for each entity. Under that key will be the standard entity state information. @@ -450,7 +450,7 @@ The value of the state after the state change. A dictionary containing any constraints and/or additional user specific keyword arguments supplied to the `listen_state()` call. -### l{% linkable_title isten_state() +### {% linkable_title listen_state() %} `listen_state()` allows the user to register a callback for a wide variety of state changes. @@ -1574,7 +1574,7 @@ self.fire_event("MODE_CHANGE", mode = "Day") Presence in Home Assistant is tracked using Device Trackers. The state of all device trackers can be found using the `get_state()` call, however AppDaemon provides several convenience functions to make this easier. -### {% linkable_title get_trackers() +### {% linkable_title get_trackers() %} Return a list of all device trackers. This is designed to be iterated over. From c24d0a9159935ad55a32244b21d143769ff92968 Mon Sep 17 00:00:00 2001 From: Fredrik Lindqvist Date: Sun, 18 Dec 2016 11:30:13 +0100 Subject: [PATCH 013/123] Import #1563 into updated docs (#1621) Fixes merge conflict in #1563 Documentation by @armills . --- source/_components/binary_sensor.flic.markdown | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/binary_sensor.flic.markdown index 30feabe6e92..769c9c6cf0f 100644 --- a/source/_components/binary_sensor.flic.markdown +++ b/source/_components/binary_sensor.flic.markdown @@ -30,12 +30,14 @@ Configuration variables: - **host** (*Optional*): The IP or hostname of the flic service server. (default: `localhost`) - **port** (*Optional*): The port of the flic service. (default: `5551`) - **discovery** (*Optional*): If `true`, the component is configured to constantly scan for new buttons. (default: `true`) - +- **timeout** (*Optional*): Maximum time in seconds an event can be queued locally on a button before discarding the event. (default: `3`) #### {% linkable_title Discovery %} If discovery is enabled, you can add a new button by pressing it for at least 7s. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. +#### {% linkable_title Timeout %} + +When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. #### {% linkable_title Events %} @@ -61,3 +63,4 @@ Event data: - **button_name**: The name of the button, that triggered the event. - **button_address**: The bluetooth address of the button, that triggered the event. - **click_type**: The type of click. Possible values are `single`, `double` and `hold`. +- **queued_time**: The amount of time this event was queued on the button, in seconds. From 40ca29b2e93b7fe5ecefc5693877a92fb22bd5d6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 16:42:12 +0100 Subject: [PATCH 014/123] Escaping --- source/_components/device_tracker.owntracks.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index 3e9b2da076a..dd78f4f261d 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -51,7 +51,7 @@ Owntracks can also be used with other device trackers, such as [Nmap](/component An example showing the inclusion of the `mac` field for multiple component tracking. The `mac` field will need to be added to the `owntracks` device and will enable tracking by all components that track via the `mac` address. ```yaml -_: +\_: name: Friendly Name mac: EA:AA:55:E7:C6:94 picture: https://home-assistant.io/images/favicon-192x192.png @@ -65,7 +65,7 @@ Owntracks can track regions, and send region entry and exit information to Home Home Assistant will use the enter and leave messages to set your zone location. Your location will be set to the center of zone when you enter. Location updates from OwnTracks will be ignored while you are inside a zone. -When you exit a zone, Home Assistant will start using location updates to track you again. To make sure that Home Assistant correctly exits a zone (which it calculates based on your GPS co-ordinates), you may want to set your Zone radius in HA to be slightly smaller that the Owntracks region radius. +When you exit a zone, Home Assistant will start using location updates to track you again. To make sure that Home Assistant correctly exits a zone (which it calculates based on your GPS coordinates), you may want to set your Zone radius in HA to be slightly smaller that the Owntracks region radius. ### {% linkable_title Using Owntracks regions - forcing Owntracks to update using %}iBeacons When run in the usual *significant changes mode* (which is kind to your phone battery), Owntracks sometimes doesn't update your location as quickly as you'd like when you arrive at a zone. This can be annoying if you want to trigger an automation when you get home. You can improve the situation using iBeacons. From f9ebbd271b4a806e704dacd39151f9ee30439bdd Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 16:47:46 +0100 Subject: [PATCH 015/123] Update variables --- source/_components/device_tracker.owntracks.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index dd78f4f261d..364b917e93e 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -51,7 +51,7 @@ Owntracks can also be used with other device trackers, such as [Nmap](/component An example showing the inclusion of the `mac` field for multiple component tracking. The `mac` field will need to be added to the `owntracks` device and will enable tracking by all components that track via the `mac` address. ```yaml -\_: +USERNAME_DEVICE_ID: name: Friendly Name mac: EA:AA:55:E7:C6:94 picture: https://home-assistant.io/images/favicon-192x192.png From 5efe180893ae24f9c261a4330c448864c4002469 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 10:21:05 -0800 Subject: [PATCH 016/123] Update tts.markdown --- source/_components/tts.markdown | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 1c28b44ff9d..4057a0cb4dd 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -50,13 +50,14 @@ tts: Say to all `media_player` device entities: ```yaml -service: tts.platform_say +# Replace google_say with _say when you use a different platform. +service: tts.google_say data: message: 'May the Force be with you.' ``` ```yaml -service: tts.platform_say +service: tts.google_say entity_id: media_player.floor data: message: 'May the Force be with you.' @@ -65,7 +66,7 @@ data: With a template: ```yaml -service: tts.platform_say +service: tts.google_say data_template: message: 'Temperature is {% raw %}{{ sensor.temperature }}{% endraw %}.' cache: false From 3c72339abfea545b66263248dbcadf395e4a91e4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 14:23:37 -0800 Subject: [PATCH 017/123] Release 0.35.1 --- _config.yml | 6 +++--- source/_components/http.markdown | 1 + ...17-text-to-speech-aquostv-flic-zamg.markdown | 17 ++++++++++++++--- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/_config.yml b/_config.yml index ebbba408766..b5dae514da0 100644 --- a/_config.yml +++ b/_config.yml @@ -131,9 +131,9 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 35 -current_patch_version: 0 -date_released: 2016-12-17 +current_patch_version: 1 +date_released: 2016-12-18 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. -patch_version_notes: "#release-0345---december-12" +patch_version_notes: "#release-0351---december-18" diff --git a/source/_components/http.markdown b/source/_components/http.markdown index 89463c89801..7bc0384c31c 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -28,6 +28,7 @@ Configuration variables: - **api_password** (*Optional*): Protect Home Assistant with a password. - **server_host** (*Optional*): Only listen to incoming requests on specific ip/host (default: accept all) - **server_port** (*Optional*): Let you set a port to use. Defaults to 8123. +- **base_url** (*Optional*): The url that Home Assistant is available on the internet. Defaults to local IP address. - **development** (*Optional*): Disable caching and load unvulcanized assets. Useful for Frontend development. - **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. - **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection. diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index 31c8cbe2a2f..bf0832e6fb0 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -62,6 +62,20 @@ The [GPSLogger](https://home-assistant.io/components/device_tracker.gpslogger/) - Media player - Kodi: Authentification fixed and fan art ([@balloob], [@joopert]) - Minor and not so minor features and bug fixes by [@pvizeli], [@jminn], [@magicus], [@teodoc], [@fabaff], [@technicalpickles], [@balloob], [@lukas-hetzenecker], [@rubund], [@dasos], [@trisk], [@armills], [@auduny], [@lwis], [@nkgilley], [@janLo], [@keatontaylor], [@stefan-jonasson], [@Jypy], [@jawilson], [@DavidLP], [@molobrakos], [@jabesq], [@joerocklin], [@kellerza], [@kirichkov], and [@danielperna84]. +### {% linkable_title Release 0.35.1 - December 18 %} + +Some issues have been reported with TTS that will be addressed by 0.35.1. The TTS component had issues linking the media player to the right media file if you were using Docker or SSL certificates. This can be fixed by exposing to your HTTP config what url you use for hosting Home Assistant: + +```yaml +http: + base_url: example.duckdns.org +``` + + - Fix exit hanging on OS X with async logging ([@balloob]) + - Fix Text to speech clearing cache ([@pvizeli]) + - Allow setting a base API url in HTTP component ([@balloob]) + - Fix occasional errors in automation ([@pvizeli]) + ### {% linkable_title If you need help... %} ...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -85,8 +99,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@farminf]: https://github.com/farminf [@jabesq]: https://github.com/jabesq [@janLo]: https://github.com/janLo -[@janLo]: https://github.com/janLo -[@jawilson]: https://github.com/jawilson [@jawilson]: https://github.com/jawilson [@jminn]: https://github.com/jminn [@joerocklin]: https://github.com/joerocklin @@ -107,7 +119,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@nkgilley]: https://github.com/nkgilley [@pvizeli]: https://github.com/pvizeli [@rubund]: https://github.com/rubund -[@rubund]: https://github.com/rubund [@soldag]: https://github.com/soldag [@stefan-jonasson]: https://github.com/stefan-jonasson [@tchellomello]: https://github.com/tchellomello From 61213e566fb09b35ad910f92b3f57551acfb836c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 17:38:13 -0800 Subject: [PATCH 018/123] Release 0.35.2 --- _config.yml | 6 +++--- .../2016-12-17-text-to-speech-aquostv-flic-zamg.markdown | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index b5dae514da0..028e14a72cd 100644 --- a/_config.yml +++ b/_config.yml @@ -131,9 +131,9 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 35 -current_patch_version: 1 -date_released: 2016-12-18 +current_patch_version: 2 +date_released: 2016-12-19 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. -patch_version_notes: "#release-0351---december-18" +patch_version_notes: "#release-0352---december-19" diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index bf0832e6fb0..5842cf86b4d 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -76,6 +76,10 @@ http: - Allow setting a base API url in HTTP component ([@balloob]) - Fix occasional errors in automation ([@pvizeli]) +### {% linkable_title Release 0.35.2 - December 19 %} + + - When base url specified, do not combine it with `server_port` ([@balloob]) + ### {% linkable_title If you need help... %} ...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. From bdb9d55d2c4c576b748979606ae228baf105c347 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 17:49:03 -0800 Subject: [PATCH 019/123] Add r-jordan to bug fix contributors --- .../2016-12-17-text-to-speech-aquostv-flic-zamg.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index 5842cf86b4d..2e76ea2fbd8 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -60,7 +60,7 @@ The [GPSLogger](https://home-assistant.io/components/device_tracker.gpslogger/) - Media player - Emby: New support for trailer and media position ([@mezz64]) - Camera - Amcrest: Support for resolution ([@tchellomello]) - Media player - Kodi: Authentification fixed and fan art ([@balloob], [@joopert]) -- Minor and not so minor features and bug fixes by [@pvizeli], [@jminn], [@magicus], [@teodoc], [@fabaff], [@technicalpickles], [@balloob], [@lukas-hetzenecker], [@rubund], [@dasos], [@trisk], [@armills], [@auduny], [@lwis], [@nkgilley], [@janLo], [@keatontaylor], [@stefan-jonasson], [@Jypy], [@jawilson], [@DavidLP], [@molobrakos], [@jabesq], [@joerocklin], [@kellerza], [@kirichkov], and [@danielperna84]. +- Minor and not so minor features and bug fixes by [@pvizeli], [@jminn], [@magicus], [@teodoc], [@fabaff], [@technicalpickles], [@balloob], [@lukas-hetzenecker], [@rubund], [@dasos], [@trisk], [@armills], [@auduny], [@lwis], [@nkgilley], [@janLo], [@keatontaylor], [@stefan-jonasson], [@Jypy], [@jawilson], [@DavidLP], [@molobrakos], [@jabesq], [@joerocklin], [@kellerza], [@kirichkov], [@r-jordan] and [@danielperna84]. ### {% linkable_title Release 0.35.1 - December 18 %} @@ -87,6 +87,7 @@ http: Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. +[@r-jordan]: https://github.com/r-jordan [@aequitas]: https://github.com/aequitas [@armills]: https://github.com/armills [@auduny]: https://github.com/auduny From 6a496d4d76d3bf490dd19b0d3ac5aa6da4366589 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 21:19:39 -0800 Subject: [PATCH 020/123] Add base url example --- source/_components/http.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/http.markdown b/source/_components/http.markdown index 7bc0384c31c..a72714bb264 100644 --- a/source/_components/http.markdown +++ b/source/_components/http.markdown @@ -28,7 +28,7 @@ Configuration variables: - **api_password** (*Optional*): Protect Home Assistant with a password. - **server_host** (*Optional*): Only listen to incoming requests on specific ip/host (default: accept all) - **server_port** (*Optional*): Let you set a port to use. Defaults to 8123. -- **base_url** (*Optional*): The url that Home Assistant is available on the internet. Defaults to local IP address. +- **base_url** (*Optional*): The url that Home Assistant is available on the internet. For example: `hass-example.duckdns.org:8123`. Defaults to local IP address. - **development** (*Optional*): Disable caching and load unvulcanized assets. Useful for Frontend development. - **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. - **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection. From c105fd6cbd6036f319a2687834e39cf4e7cc03ca Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 21:19:49 -0800 Subject: [PATCH 021/123] Update asyncio docs --- .../asyncio_working_with_async.markdown | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/developers/asyncio_working_with_async.markdown b/source/developers/asyncio_working_with_async.markdown index 48839b4648e..1ae52aeff24 100644 --- a/source/developers/asyncio_working_with_async.markdown +++ b/source/developers/asyncio_working_with_async.markdown @@ -19,7 +19,22 @@ So if you are making calls to the core (the hass object) from within a callback ## {% linkable_title Implementing an async component %} -We currently do not support async setup for components. We do however support using async functions as service handlers. Just define your handlers as a callback or coroutine and register them as usual. +To make a component async, implement an async_setup. + +```python +def setup(hass, config): + # Setup your component outside of the event loop. +``` + +Will turn into: + +```python +import asyncio + +@asyncio.coroutine +def async_setup(hass, config): + # Setup your component inside of the event loop. +``` ## {% linkable_title Implementing an async platform %} From f5c55bbab5a912ced43d6c1fed22420bc6b938d8 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 18 Dec 2016 21:20:00 -0800 Subject: [PATCH 022/123] Add TTS link to base_url in HTTP --- source/_components/tts.markdown | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 4057a0cb4dd..8fb93e67aa1 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -12,10 +12,6 @@ ha_release: 0.35 Text-to-speech (TTS) enables Home Assistant to speak to you. -## {% linkable_title Cache %} - -The component have two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. - ## {% linkable_title Configuring a `tts` platform %} To get started, add the following lines to your `configuration.yaml` (example for google): @@ -45,6 +41,10 @@ tts: time_memory: 300 ``` +

+If you are running Home Assistant over SSL or from within a container, you will have to setup a base url inside the [http component](/components/http/). +

+ ## {% linkable_title Service say %} Say to all `media_player` device entities: @@ -72,3 +72,6 @@ data_template: cache: false ``` +## {% linkable_title Cache %} + +The component have two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. From fcb25db7009a5df42cb64305280c7333f336e8fd Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 19 Dec 2016 10:36:06 -0600 Subject: [PATCH 023/123] Update nest.markdown (#1627) Added note to leave the Redirect URI blank. --- source/_components/nest.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index 482e42013eb..15e578396f5 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -25,6 +25,7 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 6. Fill in details: - Product name must be unique. We recommend [email] - Home Assistant. - The description, users, urls can all be anything you want. + - Leave the "Redirect URI" Field blank 7. For permissions check every box and if it's an option select the read/write option. - The description requires a specific format to be accepted. - Use "[Home Assistant] [Edit] [For Home Automation]" as the description as it is not super important. From 4fa59d24e423e31765987869e0aecc6f0cedff23 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 19 Dec 2016 09:05:06 -0800 Subject: [PATCH 024/123] Add thank you blog post --- source/_posts/2016-12-19-thank-you.markdown | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 source/_posts/2016-12-19-thank-you.markdown diff --git a/source/_posts/2016-12-19-thank-you.markdown b/source/_posts/2016-12-19-thank-you.markdown new file mode 100644 index 00000000000..805ea6c4265 --- /dev/null +++ b/source/_posts/2016-12-19-thank-you.markdown @@ -0,0 +1,37 @@ +--- +layout: post +title: "Thank You" +description: "Thanks to all our contributors, dependencies and companies that help make Home Assistant awesome." +date: 2016-12-18 21:04:05 -0800 +date_formatted: "December 19, 2016" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Community +og_image: +--- + +A year ago [Home Assistant 0.10][0.10] landed. Last weekend we released 0.35. Doing 25 releases in a year is a big accomplishment by the community and each release has moved us forwards leaps and bounds. In this year alone we have seen 2800 pull requests on the main repo alone, that's more than 7 a day! + +One of the things that Jon Walker, the founder of the company I work for ([AppFolio]), has taught me is that the biggest advantage that you can create for yourself compared to your competitors is to release more often. Everytime you release you are able to get the new features into the hands of the users and developers. The faster people start using it, the faster you get feedback on the good and bad parts and thus the faster can you evolve. + +That's why I structured Home Assistant around a two week release cycle. It makes sure that features get out fast and it also forces us to not accumulate a backlog of things to document or test properly. Every two weeks we can start fresh. This makes it easy for new people to start contributing because it's clear when things go out and people are not afraid to miss a release. + +However, being on a two week release cycle also means that the community has to rally each two weeks to make sure everything is ready to go. A lot of people are involved in making sure that all pieces are in place, to all of those: thank you! Thank you for all the time and effort you put in to make Home Assistant the best home automation software out there. + +Another big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. Making quality software is not a small feat and all of you can be proud of yourself. + +Also a big thanks for the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thanks [GitHub], [TravisCI], [CloudFlare] and [Discourse]! + +And finally thank you community for being so helpful and awesome 🙇. + +We're taking a well deserved break and we will be back again in 2017 with more awesomeness. Happy holidays! + +– Paulus + +[0.10]: https://home-assistant.io/blog/2015/12/22/amazon-echo-icloud-and-templates/ +[AppFolio]: http://www.appfolioinc.com/ +[GitHub]: https://GitHub.com +[TravisCI]: https://Travis-ci.org +[CloudFlare]: https://CloudFlare.com +[Discourse]: https://Discourse.com From 34771d067407af85a38a5ab11e053e4e5e010a9d Mon Sep 17 00:00:00 2001 From: Terry Carlin Date: Mon, 19 Dec 2016 11:14:12 -0700 Subject: [PATCH 025/123] Removing references to URL and replacing with IP address (#1629) The homeassistant/components/media_player/itunes.py requires an IP address not a URL --- source/_components/media_player.itunes.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/media_player.itunes.markdown b/source/_components/media_player.itunes.markdown index c046755ae2a..fd357eb8ec7 100644 --- a/source/_components/media_player.itunes.markdown +++ b/source/_components/media_player.itunes.markdown @@ -24,10 +24,10 @@ To add iTunes to your installation, add the following to your `configuration.yam # Example configuration.yaml entry media_player: - platform: itunes - host: http://192.168.1.50 + host: 192.168.1.50 ``` Configuration variables: -- **host** (*Required*): The URL of the itunes-api API, eg. http://192.168.1.50 +- **host** (*Required*): The IP of the itunes-api API, eg. 192.168.1.50 - **port** (*Optional*): The port where itunes-api is accessible, eg. 8181. From f478ea0798c0cce2750d7d9166990ed2db27190d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 18 Dec 2016 16:59:44 +0100 Subject: [PATCH 026/123] Fix sample --- source/_components/device_tracker.owntracks.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index 364b917e93e..e8562f8b307 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -58,7 +58,7 @@ USERNAME_DEVICE_ID: gravatar: test@example.com track: yes hide_if_away: no - ``` +``` ### {% linkable_title Using Owntracks regions %} Owntracks can track regions, and send region entry and exit information to Home Assistant (HA). You set up a region in the Owntracks app which you should name the same as your HA Zone, and then make sure to turn on the `share` option for the region in the owntracks app. Please see the [owntracks documentation](http://owntracks.org/booklet/guide/waypoints/). From 45fc9c13564ff630196ced57ca880a8f27624adf Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 19 Dec 2016 21:11:43 +0100 Subject: [PATCH 027/123] Make it more clear --- source/_posts/2016-04-07-static-website.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2016-04-07-static-website.markdown b/source/_posts/2016-04-07-static-website.markdown index 9e81ef881fe..911e442b635 100644 --- a/source/_posts/2016-04-07-static-website.markdown +++ b/source/_posts/2016-04-07-static-website.markdown @@ -11,7 +11,7 @@ categories: How-To og_image: /images/blog/2016-04-display/ha-display.png --- -The frontend of Home Assistant is served with the help of a local web server. If you have [customized](/getting-started/devices/#customizing-devices-and-services) your installation you already use this functionality. The content of your folder `www` in your Home Assistant configuration directory (`.homeassistant`) is available under `/local` (eg. [https://localhost:8123/local](https://localhost:8123/local)). +The frontend of Home Assistant is served with the help of a local web server. If you have [customized](/getting-started/devices/#customizing-devices-and-services) your installation you already use this functionality. The content of your folder `www` in your Home Assistant configuration directory (`.homeassistant`) is available under `/local` (eg. [http://localhost:8123/local](https://localhost:8123/local/index.html) for an `index.html` file). But there is more you can do! You can not only host images for customization there but HTML files or even web applications including CSS and Javascript. From dd5a1767a2b6633bfcc16c6db3ce69b1965ff15c Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Tue, 20 Dec 2016 02:24:47 -0500 Subject: [PATCH 028/123] Clarification time. (#1598) Just some clarification based on https://github.com/home-assistant/home-assistant/issues/4904#issuecomment-267426303 --- source/getting-started/automation-trigger.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/getting-started/automation-trigger.markdown b/source/getting-started/automation-trigger.markdown index f47c0a1c695..79bbf3681fa 100644 --- a/source/getting-started/automation-trigger.markdown +++ b/source/getting-started/automation-trigger.markdown @@ -113,7 +113,7 @@ automation: platform: time # Matches every hour at 5 minutes past whole minutes: 5 - seconds: 0 + seconds: 00 automation 2: trigger: @@ -127,8 +127,11 @@ automation 3: platform: time # You can also match on interval. This will match every 5 minutes minutes: '/5' - seconds: 0 + seconds: 00 ``` +

+ Rememebr that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute. +

### {% linkable_title Zone trigger %} From 0429b5e38e7bab8acc149faae49102ce6ac155d3 Mon Sep 17 00:00:00 2001 From: hokagegano Date: Tue, 20 Dec 2016 17:45:40 +0100 Subject: [PATCH 029/123] Update sensor.rfxtrx.markdown --- source/_components/sensor.rfxtrx.markdown | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.rfxtrx.markdown b/source/_components/sensor.rfxtrx.markdown index dabffea8e95..3c8aa88b952 100644 --- a/source/_components/sensor.rfxtrx.markdown +++ b/source/_components/sensor.rfxtrx.markdown @@ -29,8 +29,8 @@ Then when the sensor emits a signal it will be automatically added:

-Here the name is `0a52080000301004d240259` and you can verify that it works from the frontend. -Then you should update your configuration to: +Here the name is `0a52080000301004d240259` or `0a52080000301004d240259_temperature` and you can verify that it works from the frontend. +Then you should update your configuration to (_temperature is not needed): ```yaml # Example configuration.yaml entry @@ -54,6 +54,17 @@ sensor: - Humidity - Temperature ``` +Only these data_type are valid : +- *Temperature* +- *Humidity* +- *Barometer* +- *Wind direction* +- *Rain rate* +- *Energy usage* +- *Total usage* +- *Sound* +- *Sensor Status* +- *Counter value* Example configuration: @@ -79,3 +90,5 @@ Configuration variables: - **automatic_add** (*Optional*): To enable the automatic addition of new lights. - **data_type** (*Optional*): Which data type the sensor should show - **fire_event** (*Optional*): Fires an event even if the state is the same as before. Can be used for automations. + + From 3f72924e41e6eb32358d371886eee6be8e0969e8 Mon Sep 17 00:00:00 2001 From: Jonathan Baginski Date: Tue, 20 Dec 2016 17:36:41 -0500 Subject: [PATCH 030/123] Update installation-raspberry-pi-all-in-one.markdown updated username and paths to reflect updated usage. --- ...tallation-raspberry-pi-all-in-one.markdown | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 7acb8286c3c..5cfef840572 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -9,13 +9,13 @@ footer: true The [Raspberry Pi All-In-One Installer](https://github.com/home-assistant/fabric-home-assistant) deploys a complete Home Assistant server including support for MQTT with websockets, Z-Wave, and the Open-Zwave Control Panel. -The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian Jessie](https://www.raspberrypi.org/downloads/raspbian/) connected to your network. +The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) connected to your network. * Login to Raspberry Pi. For example with `ssh pi@your_raspberry_pi_ip` * Run the following command ```bash -$ wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh +$ wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh ```

Note this command is one-line and not run as sudo. @@ -27,7 +27,7 @@ Installation will take approx. 1-2 hours depending on the Raspberry Pi model the Once rebooted, your Raspberry Pi will be up and running with Home Assistant. You can access it at [http://your_raspberry_pi_ip:8123](http://your_raspberry_pi_ip:8123). -The Home Assistant configuration is located at `/home/hass/.homeassistant`. The [virtualenv](https://virtualenv.pypa.io/en/latest/) with the Home Assistant installation is located at `/srv/hass/hass_venv`. As part of the secure installation, a new user (**hass**) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your `configuration.yaml` files, you will need to run the commands with `sudo` or by switching user. +The Home Assistant configuration is located at `/home/hass/.homeassistant`. The [virtualenv](https://virtualenv.pypa.io/en/latest/) with the Home Assistant installation is located at `/srv/homeassistant/homeassistant_venv`. As part of the secure installation, a new user (**homeassistant**) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your `configuration.yaml` files, you will need to run the commands with `sudo` or by switching user.

*Windows users*: Setting up WinSCP to allow this seemlessly is at the end of this page. @@ -41,20 +41,20 @@ The All-In-One Installer script will do the following automatically: * Create needed service accounts * Install OS and Python dependencies * Setup a python virtualenv to run Home Assistant and components inside. -* Run as `hass` service account +* Run as `homeassistant` service account * Install Home Assistant in a virtualenv -* Build and install Mosquitto v1.4.9 from source with websocket support running on ports 1883 and 9001 +* Install Mosquitto with websocket support running on ports 1883 and 9001 * Build and Install Python-openzwave in the Home Assistant virtualenv -* Build openzwave-control-panel in `/srv/hass/src/open-zwave-control-panel` -* Add both Home Assistant and Mosquitto to systemd services to start at boot +* Build openzwave-control-panel in `/srv/homeassistant/src/open-zwave-control-panel` +* Add Home Assistant to systemd services to start at boot ### {% linkable_title Upgrading %} To upgrade the All-In-One setup manually: * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to hass user `sudo su -s /bin/bash hass` -* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` +* Change to homeassistant user `sudo su -s /bin/bash homeassistant` +* Change to virtual enviroment `source /srv/homeassistant/homeassistant_venv/bin/activate` * Update HA `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. @@ -75,7 +75,7 @@ To launch the OZWCP web application: * Make sure Home Assistant is not running! So stop that first * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to the ozwcp directory `cd /srv/hass/src/open-zwave-control-panel/` +* Change to the ozwcp directory `cd /srv/homeassistant/src/open-zwave-control-panel/` * Launch the control panel `sudo ./ozwcp -p 8888` * Open a web browser to `http://your_pi_ip:8888` * Specify your zwave controller, for example `/dev/ttyACM0` and hit initialize From 1d7e520f3c2e7c4b04ec85a300914d5719115118 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Wed, 21 Dec 2016 00:48:36 -0500 Subject: [PATCH 031/123] Added section To change the MQTT default password (#1632) * Added section To change the MQTT default password --- .../installation-raspberry-pi-all-in-one.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 5cfef840572..c5b310312d7 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -69,6 +69,13 @@ After upgrading, you can restart Home Assistant a few different ways: * Restarting the Raspberry Pi `sudo reboot` * Restarting the Home-Assistant Service `sudo systemctl restart home-assistant.service` +### {% linkable_title To change the MQTT default password %} + +* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` +* Change password `sudo mosquitto_passwd /etc/mosquitto/pwfile pi` +* Restart mosquitto `sudo systemctl restart mosquitto.service` +* Be sure to update your `configuration.yaml` to reflect the new password. + ### {% linkable_title Using the OZWCP web application %} To launch the OZWCP web application: From 2aac86dae7f19f670534bb9dcb76629cf07746d1 Mon Sep 17 00:00:00 2001 From: Carlo Costanzo Date: Wed, 21 Dec 2016 01:03:42 -0500 Subject: [PATCH 032/123] Added an example of a control option. (#1635) Inclusion of hiding control option of groups. --- source/_components/group.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 1ff8a8f457d..731ab582781 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -74,6 +74,7 @@ Notice in the example below that in order to refer to the group "Living Room", y ```yaml # Example configuration.yaml entry that shows two groups, referred to in a view group (tab) Living Room: + control: hidden entities: - light.light_family_1 - binary_sensor.motion_living From 3998fb6c18a49da4c3f26a02d782cc6949fce324 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 21 Dec 2016 09:59:01 +0100 Subject: [PATCH 033/123] Update media_player.markdown --- source/_components/media_player.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index ae8639342ec..1850653639b 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -32,7 +32,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| | `entity_id` | yes | Target a specific media player. Defaults to all. | -| `volume_level` | no | Integer for volume level | +| `volume_level` | no | Float for volume level | #### {% linkable_title Service `media_player/media_seek` %} From ddc0ba2a581c5c5e7f69f8dbd61c297de5e3b681 Mon Sep 17 00:00:00 2001 From: Jonathan Baginski Date: Wed, 21 Dec 2016 10:05:00 -0500 Subject: [PATCH 034/123] Update installation-raspberry-pi-all-in-one.markdown updated GPIO details --- .../installation-raspberry-pi-all-in-one.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index c5b310312d7..0c588b9b5c8 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -93,7 +93,7 @@ To launch the OZWCP web application: ### {% linkable_title Using the GPIOs %} -Please note that if you are using any components for Home Assistant that would use the GPIOs on the RPI, you will need to grant the default AiO user `hass` access to the GPIOs. Run the following command `sudo adduser hass gpio` while in a terminal session on your Pi. This is a one time configuration change to allow All In One Installer based Home Assistant access to the GPIOs. +The (**homeassistant**)user is added to the GPIO group as part of the install now. ### {% linkable_title WinSCP %} From 41626643d32e14ea63bbcaf377d9ec72e66a385e Mon Sep 17 00:00:00 2001 From: Xx-Ness-xX Date: Wed, 21 Dec 2016 13:23:00 -0600 Subject: [PATCH 035/123] Configuration variables: units (optional) Added descriptions for units, and an example entry for configuration.yaml --- source/_components/sensor.google_travel_time.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown index 7c904d9d540..16c08a70988 100644 --- a/source/_components/sensor.google_travel_time.markdown +++ b/source/_components/sensor.google_travel_time.markdown @@ -37,6 +37,7 @@ Configuration variables: - **options** (*Optional*): A dictionary containing parameters to add to all requests to the Distance Matrix API. A full listing of available options can be found [here](https://developers.google.com/maps/documentation/distance-matrix/intro#RequestParameters). - **departure_time** (*Optional*): Can be `now`, a Unix timestamp, or a 24 hour time string like `08:00:00`. If you provide a time string, it will be combined with the current date to get travel time for that moment. - **arrival_time** (*Optional*): See notes above for `departure_time`. `arrival_time` can not be `now`, only a Unix timestamp or time string. You can not provide both `departure_time` and `arrival_time`. If you do provide both, `arrival_time` will be removed from the request. + - **units** (*Optional*): Set the unit for the sensor in metric or imperial, otherwise the default unit the same as the unit set in `unit_system:`. ##### {% linkable_title Dynamic Configuration %} @@ -58,6 +59,14 @@ sensor: api_key: XXXX_XXXXX_XXXXX origin: zone.home destination: Eddies House # Friendly name of a zone + + # Tracking entity in imperial unit + - platform: google_travel_time + api_key: XXXX_XXXXX_XXXXX + destination: zone.home + options: + units: imperial # 'metric' for Metric, 'imperial' for Imperial + ``` #### {% linkable_title Entity Tracking %} From 9d1f01f0e95f667a648dede594ab72939d44e0bc Mon Sep 17 00:00:00 2001 From: Kyle Gordon Date: Wed, 21 Dec 2016 20:03:31 +0000 Subject: [PATCH 036/123] Remove superfluous - (#1638) broadcast doesn't need - --- source/_components/light.lifx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index f326e3cb95e..d4be5e91192 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -19,7 +19,7 @@ The `lifx` platform allows you to integrate your [LIFX](http://www.lifx.com) int # Example configuration.yaml entry light: - platform: lifx - - broadcast: 192.168.1.255 + broadcast: 192.168.1.255 ``` Configuration variables: From a948767b40d598c727a35ba384b1e68e8dcd89c9 Mon Sep 17 00:00:00 2001 From: Krasimir Chariyski Date: Wed, 21 Dec 2016 22:04:09 +0200 Subject: [PATCH 037/123] Add proper markdown for links (#1637) Add proper markdown for links. --- source/_components/notify.html5.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 9821dec6df6..a5c935f16a1 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -32,9 +32,9 @@ Configuration variables: - **gcm_sender_id** (*Required if pushing to Chrome*): The sender ID provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. ### {% linkable_title Getting ready for Chrome %} -Create new project at https://console.cloud.google.com/home/dashboard -Go to https://console.cloud.google.com/apis/credentials/domainverification and verify your domain -After that, go to https://console.firebase.google.com and select import Google project, select the project you created +Create new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard) +Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain +After that, go to [https://console.firebase.google.com](https://console.firebase.google.com) and select import Google project, select the project you created Then, click the clogwheel on top left and select Project settings Select Cloud messaging tab if under server key is button Regenerate key, click that From e3ae3e3698c63e8e8e561ca6234c571b0b87e11f Mon Sep 17 00:00:00 2001 From: Will Heid Date: Fri, 23 Dec 2016 03:02:06 -0800 Subject: [PATCH 038/123] Add note about new default Raspbian behavior (#1640) * Add note about new default Raspbian behavior --- .../installation-raspberry-pi-all-in-one.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 0c588b9b5c8..30ce58992bd 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -11,6 +11,10 @@ The [Raspberry Pi All-In-One Installer](https://github.com/home-assistant/fabric The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) connected to your network. +

+Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` or the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel) +

+ * Login to Raspberry Pi. For example with `ssh pi@your_raspberry_pi_ip` * Run the following command From 7b172c98f86c7a50aa8ebf04aff2d548a81d483c Mon Sep 17 00:00:00 2001 From: Chris Monteiro Date: Fri, 23 Dec 2016 06:02:40 -0500 Subject: [PATCH 039/123] Added new model (#1645) --- source/_components/media_player.aquostv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown index 601ca86896b..ed017b0a223 100644 --- a/source/_components/media_player.aquostv.markdown +++ b/source/_components/media_player.aquostv.markdown @@ -44,5 +44,6 @@ Currently known supported models: - LC-60LE830U - LC-52LE925UN - LC-60LE925UN +- LC-60LE857U If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.aquostv.markdown). From 514a68a315804d3770f0a979af0491567e63e7e3 Mon Sep 17 00:00:00 2001 From: andrey-git Date: Fri, 23 Dec 2016 13:10:08 +0200 Subject: [PATCH 040/123] Describe using language in a TTS service. (#1644) * Following pull request #5047 describe using language in a service. * Update tts.markdown Added descriptors for yaml examples . --- source/_components/tts.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 8fb93e67aa1..8e9fac152f7 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -55,6 +55,7 @@ service: tts.google_say data: message: 'May the Force be with you.' ``` +Say to the `media_player.floor` device entitie: ```yaml service: tts.google_say @@ -63,6 +64,16 @@ data: message: 'May the Force be with you.' ``` +Say to the `media_player.floor` device entitie in french: + +```yaml +service: tts.google_say +entity_id: media_player.floor +data: + message: 'Que la force soit avec toi.' + language: 'fr' +``` + With a template: ```yaml @@ -72,6 +83,7 @@ data_template: cache: false ``` + ## {% linkable_title Cache %} The component have two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. From 91cbaff9254a216d8559c8a9f706e5613caa4015 Mon Sep 17 00:00:00 2001 From: Fredrik Lindqvist Date: Fri, 23 Dec 2016 14:17:18 +0100 Subject: [PATCH 041/123] Revert "Describe using language in a TTS service." (#1647) Merged by mistake. --- source/_components/tts.markdown | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 8e9fac152f7..8fb93e67aa1 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -55,7 +55,6 @@ service: tts.google_say data: message: 'May the Force be with you.' ``` -Say to the `media_player.floor` device entitie: ```yaml service: tts.google_say @@ -64,16 +63,6 @@ data: message: 'May the Force be with you.' ``` -Say to the `media_player.floor` device entitie in french: - -```yaml -service: tts.google_say -entity_id: media_player.floor -data: - message: 'Que la force soit avec toi.' - language: 'fr' -``` - With a template: ```yaml @@ -83,7 +72,6 @@ data_template: cache: false ``` - ## {% linkable_title Cache %} The component have two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. From 380c5f6eefa84b2b06f7e421b778f48995153f5f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 23 Dec 2016 16:18:02 +0100 Subject: [PATCH 042/123] Update 2016-12-17-text-to-speech-aquostv-flic-zamg.markdown --- .../2016-12-17-text-to-speech-aquostv-flic-zamg.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown index 2e76ea2fbd8..eb68d517486 100644 --- a/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown +++ b/source/_posts/2016-12-17-text-to-speech-aquostv-flic-zamg.markdown @@ -80,6 +80,13 @@ http: - When base url specified, do not combine it with `server_port` ([@balloob]) +### {% linkable_title Release 0.35.3 - December 23 %} + + - Fix issue with voicerrs and post api ([@pvizeli]) + - Fix async component update on service calls ([@pvizeli]) + - Fix async log handle do not close ([@pvizeli]) + - Fix nest component with various KeyError exceptions ([@technicalpickles]) + ### {% linkable_title If you need help... %} ...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. From 9db0a34a2b3a8b1551a2b502db8dec210ed8f841 Mon Sep 17 00:00:00 2001 From: Jonathan Baginski Date: Fri, 23 Dec 2016 16:03:32 -0500 Subject: [PATCH 043/123] Update installation-raspberry-pi.markdown fixed service account user listed under AiO notes. --- source/getting-started/installation-raspberry-pi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/installation-raspberry-pi.markdown b/source/getting-started/installation-raspberry-pi.markdown index fadd27addc6..c30b177cfcd 100644 --- a/source/getting-started/installation-raspberry-pi.markdown +++ b/source/getting-started/installation-raspberry-pi.markdown @@ -14,7 +14,7 @@ footer: true There's currently three documented ways to install Home Assistant on a Raspberry Pi. - [Manual installation](/getting-started/installation-raspberry-pi/#Manual-Installation). Following this guide doing each step manually. This is highly recommended as a first installation since you get a good overview of the installation. - [Hassbian image](/getting-started/installation-raspberry-pi-image). Basic installation with the same settings as following the manual installation guide. Some additional software is preinstalled to make installation quicker and easier. Installation uses `homeassistant` user. - - [All-in-One Installer](/getting-started/installation-raspberry-pi-all-in-one/). Fabric based installation script that installs and compiles many of the things an advanced Home Assistant install is likely to need. Installation uses `hass` user. + - [All-in-One Installer](/getting-started/installation-raspberry-pi-all-in-one/). Fabric based installation script that installs and compiles many of the things an advanced Home Assistant install is likely to need. Installation uses `homeassistant` user.

Since each installation type uses a different user for Home Assistant, be sure to note and use the correct username for the `adduser` commands listed below for camera and GPIO extensions. From 2f2127dd8b992213b6a2dc2a280d04999eb215ba Mon Sep 17 00:00:00 2001 From: smolz Date: Sat, 24 Dec 2016 00:12:32 -0800 Subject: [PATCH 044/123] Update group_visibility.markdown (#1649) --- source/_topics/group_visibility.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_topics/group_visibility.markdown b/source/_topics/group_visibility.markdown index 64b01be9e78..a312ced7588 100644 --- a/source/_topics/group_visibility.markdown +++ b/source/_topics/group_visibility.markdown @@ -56,7 +56,7 @@ automation 2: ## {% linkable_title Easier automations %} -One of the most common uses cases are to show groups during certain times of day, maybe commuting information durig a work day morning or light switches when it is getting dark. The complexity of automations needed to make this happen will quickly get out of hands. So, one way to make the automations easier is to create a sensor that alters its state depending on time of day. One way of doing that is using a `command_line` sensor and a script: +One of the most common uses cases are to show groups during certain times of day, maybe commuting information during a work day morning or light switches when it is getting dark. The complexity of automations needed to make this happen will quickly get out of hand. So, one way to make the automations easier is to create a sensor that alters its state depending on time of day. One way of doing that is using a `command_line` sensor and a script: ```python #!/usr/bin/env python3 @@ -103,7 +103,7 @@ sensor: command: "python3 occasion.py" ``` -To simplify things, we create a Home Assistant script that change visibility of a group but also verifies that an entity is in a specific state: +To simplify things, we create a Home Assistant script that changes the visibility of a group, but also verifies that an entity is in a specific state: ```yaml script: @@ -176,4 +176,4 @@ automation: entity_id: group.work_sensors cond: sensor.occasion visible_state: 'work_morning' -``` \ No newline at end of file +``` From 5a3c04697a789a31ad52a9dc8334effdfae9cca9 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 25 Dec 2016 19:56:03 +0100 Subject: [PATCH 045/123] Update frontpage for 0.35.3 --- _config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 028e14a72cd..9cd44b84333 100644 --- a/_config.yml +++ b/_config.yml @@ -131,8 +131,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 35 -current_patch_version: 2 -date_released: 2016-12-19 +current_patch_version: 3 +date_released: 2016-12-23 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. From ad83231605c95a3bca8cd59437d5b015bce57fd6 Mon Sep 17 00:00:00 2001 From: atorralba Date: Sun, 25 Dec 2016 23:14:52 +0100 Subject: [PATCH 046/123] Update media_player.samsungtv.markdown Added JU6400 model as showing in GUI but unable to control. --- source/_components/media_player.samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index be9dd04a1a5..0374c23a708 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -54,6 +54,7 @@ Currently tested but not working models: - KU6300 - Shows in GUI but unable to control. - H6400 - Shows in GUI but unable to control. - J5200 - Unable to see state and unable to control +- JU6400 - Shows in GUI but unable to control If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). The first letter (U, P, L, H & K) represent the screen type, e.g. LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. From 12ba9ed751930400c42ecad64e811a8c5303de8f Mon Sep 17 00:00:00 2001 From: smolz Date: Mon, 26 Dec 2016 05:16:24 -0800 Subject: [PATCH 047/123] Update dweet.markdown (#1654) --- source/_components/dweet.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/dweet.markdown b/source/_components/dweet.markdown index 37cf9a82e0c..ae2fabf2376 100644 --- a/source/_components/dweet.markdown +++ b/source/_components/dweet.markdown @@ -21,7 +21,7 @@ The `dweet` component makes it possible to transfer details collected with Home

- The publishing interval is limited to 1 second. This means that it's possible to missing fast changes. + The publishing interval is limited to 1 second. This means that it's possible to miss fast changes.

To use the `deweet` component in your installation, add the following to your `configuration.yaml` file: From bfb89cab9746e581b3140440e89377d0d361176a Mon Sep 17 00:00:00 2001 From: PuckStar Date: Mon, 26 Dec 2016 17:05:42 +0100 Subject: [PATCH 048/123] "homeassistant" changed in "hass" (#1656) Couldn't update Home Assistant. Found out the word homeassistant was changed in hass. After changing that the update worked. --- .../installation-raspberry-pi-all-in-one.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 30ce58992bd..56925fb687f 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -57,8 +57,8 @@ The All-In-One Installer script will do the following automatically: To upgrade the All-In-One setup manually: * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to homeassistant user `sudo su -s /bin/bash homeassistant` -* Change to virtual enviroment `source /srv/homeassistant/homeassistant_venv/bin/activate` +* Change to homeassistant user `sudo su -s /bin/bash hass` +* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` * Update HA `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. From 3f93d28d54d1809400b4e03ce81c09267a45a369 Mon Sep 17 00:00:00 2001 From: Fredrik Lindqvist Date: Mon, 26 Dec 2016 17:32:37 +0100 Subject: [PATCH 049/123] Revert ""homeassistant" changed in "hass"" (#1657) --- .../installation-raspberry-pi-all-in-one.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 56925fb687f..30ce58992bd 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -57,8 +57,8 @@ The All-In-One Installer script will do the following automatically: To upgrade the All-In-One setup manually: * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to homeassistant user `sudo su -s /bin/bash hass` -* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` +* Change to homeassistant user `sudo su -s /bin/bash homeassistant` +* Change to virtual enviroment `source /srv/homeassistant/homeassistant_venv/bin/activate` * Update HA `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. From 145b8cb0068f1af5a096431649655841e5d33643 Mon Sep 17 00:00:00 2001 From: Jonathan Baginski Date: Mon, 26 Dec 2016 11:36:27 -0500 Subject: [PATCH 050/123] Update fixed upgrade notes to reflect correct commands. added alt commands for prior aio paths and user. --- .../installation-raspberry-pi-all-in-one.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 30ce58992bd..cdaeb2f2985 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -61,6 +61,16 @@ To upgrade the All-In-One setup manually: * Change to virtual enviroment `source /srv/homeassistant/homeassistant_venv/bin/activate` * Update HA `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. + +

+If you deployed Home Assistant via the AiO installer prior to December 2016, you will need to use the following commands: +* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` +* Change to homeassistant user `sudo su -s /bin/bash hass` +* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` +* Update HA `pip3 install --upgrade homeassistant` +* Type `exit` to logout the hass user and return to the `pi` user. +

+ To upgrade with fabric: From 23985c34e212f12052e0ec80e03b49f7f7c14ffb Mon Sep 17 00:00:00 2001 From: Jonathan Baginski Date: Mon, 26 Dec 2016 11:41:20 -0500 Subject: [PATCH 051/123] Update installation-raspberry-pi-all-in-one.markdown fixed formatting. --- .../installation-raspberry-pi-all-in-one.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index cdaeb2f2985..88cb9b5a985 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -64,11 +64,13 @@ To upgrade the All-In-One setup manually:

If you deployed Home Assistant via the AiO installer prior to December 2016, you will need to use the following commands: + * Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` * Change to homeassistant user `sudo su -s /bin/bash hass` * Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` * Update HA `pip3 install --upgrade homeassistant` * Type `exit` to logout the hass user and return to the `pi` user. +

From 8f3b40da1ab8f437eb9e1548e1a78c7db503bbcb Mon Sep 17 00:00:00 2001 From: Jonathan Baginski Date: Mon, 26 Dec 2016 11:50:06 -0500 Subject: [PATCH 052/123] Update installation-raspberry-pi-all-in-one.markdown formatting fix --- .../installation-raspberry-pi-all-in-one.markdown | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/source/getting-started/installation-raspberry-pi-all-in-one.markdown b/source/getting-started/installation-raspberry-pi-all-in-one.markdown index 88cb9b5a985..3bcbe0eac49 100644 --- a/source/getting-started/installation-raspberry-pi-all-in-one.markdown +++ b/source/getting-started/installation-raspberry-pi-all-in-one.markdown @@ -63,15 +63,7 @@ To upgrade the All-In-One setup manually: * Type `exit` to logout the hass user and return to the `pi` user.

-If you deployed Home Assistant via the AiO installer prior to December 2016, you will need to use the following commands: - -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to homeassistant user `sudo su -s /bin/bash hass` -* Change to virtual enviroment `source /srv/hass/hass_venv/bin/activate` -* Update HA `pip3 install --upgrade homeassistant` -* Type `exit` to logout the hass user and return to the `pi` user. - -

+If you deployed Home Assistant via the AiO installer prior to December 2016, replace `sudo su -s /bin/bash homeassistant` with `sudo su -s /bin/bash hass` and `source /srv/homeassistant/homeassistant_venv/bin/activate` with `source /srv/hass/hass_venv/bin/activate`

To upgrade with fabric: From d1c59651210d386351f38f6a61c92a2ad4c9591e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Tue, 27 Dec 2016 13:30:19 +0100 Subject: [PATCH 053/123] Fixes copy/paste error in lock.mqtt (#1661) --- source/_components/lock.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown index 89f013b999d..4bec5e48e4d 100644 --- a/source/_components/lock.mqtt.markdown +++ b/source/_components/lock.mqtt.markdown @@ -71,7 +71,7 @@ lock: Keep an eye on ratining messages to keep the state as you don't want to unlock your door by accident when you restart something. -For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your cover manually: +For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your lock manually: ```bash $ mosquitto_pub -h 127.0.0.1 -t home-assistant/frontdoor/set -m "LOCK" From 209e01e5654a0c835ca4c5a956e059acd00c6e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Tue, 27 Dec 2016 13:31:07 +0100 Subject: [PATCH 054/123] Small doc layout fixes in switch.mqtt (#1660) --- source/_components/switch.mqtt.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/switch.mqtt.markdown b/source/_components/switch.mqtt.markdown index 1b87f9639e8..14a1f7e6ba8 100644 --- a/source/_components/switch.mqtt.markdown +++ b/source/_components/switch.mqtt.markdown @@ -15,9 +15,9 @@ ha_iot_class: depends The `mqtt` switch platform let you control your MQTT enabled switch. -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with RETAIN flag, the MQTT switch will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the switch will be false/off. +In an ideal scenario, the MQTT device will have a `state_topic` to publish state changes. If these messages are published with `RETAIN` flag, the MQTT switch will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the switch will be false/off. -When a state topic is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from device (message from `state_topic`). +When a `state_topic` is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from device (message from `state_topic`). Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect switch operation. @@ -37,7 +37,7 @@ Configuration variables: - **command_topic** (*Required*): The MQTT topic to publish commands to change the switch state. - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". -- **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is true if no state topic defined, else false. +- **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is `true` if no `state_topic` defined, else `false`. - **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - **retain** (*Optional*): If the published message should have the retain flag on or not. - **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload. @@ -68,7 +68,7 @@ switch: retain: true ``` -For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your cover manually: +For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your switch manually: ```bash $ mosquitto_pub -h 127.0.0.1 -t home/bedroom/switch1set -m "ON" From ba3fdbb8e7dc9c788827b565a6e5aff9246ef8c3 Mon Sep 17 00:00:00 2001 From: smolz Date: Tue, 27 Dec 2016 04:31:30 -0800 Subject: [PATCH 055/123] Update lock.mqtt.markdown (#1659) --- source/_components/lock.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/lock.mqtt.markdown b/source/_components/lock.mqtt.markdown index 4bec5e48e4d..2705ea61509 100644 --- a/source/_components/lock.mqtt.markdown +++ b/source/_components/lock.mqtt.markdown @@ -69,7 +69,7 @@ lock: value_template: '{% raw %}{{ value.x }}{% endraw %}' ``` -Keep an eye on ratining messages to keep the state as you don't want to unlock your door by accident when you restart something. +Keep an eye on retaining messages to keep the state as you don't want to unlock your door by accident when you restart something. For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your lock manually: From ec4a528e9a1f45158663ea9669599a1a3ae102d3 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 27 Dec 2016 20:31:50 +0100 Subject: [PATCH 056/123] Replace 'validate_config' with voluptuous --- .../python_component_basic_state.markdown | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/source/_cookbook/python_component_basic_state.markdown b/source/_cookbook/python_component_basic_state.markdown index 1720868ed4d..b2c1e838e56 100644 --- a/source/_cookbook/python_component_basic_state.markdown +++ b/source/_cookbook/python_component_basic_state.markdown @@ -99,22 +99,20 @@ hello_state: text: 'Hello, World!' ``` -Thanks to `DEFAULT_TEXT` variable the component will launch even if no `text:` field is used in the `configuration.yaml` file. Quite often there are variables which are required. It's important to check if all mandatory configuration variables are provided. If not, the setup should fail. We will use the `validate_config` function as a helper to achive this. The next listing shows the essential parts. +Thanks to `DEFAULT_TEXT` variable the component will launch even if no `text:` field is used in the `configuration.yaml` file. Quite often there are variables which are required. It's important to check if all mandatory configuration variables are provided. If not, the setup should fail. We will use `voluptuous` as a helper to achive this. The next listing shows the essential parts. ```python -from homeassistant.helpers import validate_config +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv [...] - if not validate_config(config, {DOMAIN: [CONF_TEXT]}, _LOGGER): - return False +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_TEXT): cv.string, +}) ``` If `text:` is missing, there will be a warning in the log file. -```bash -16-03-12 14:37:37 ERROR (MainThread) [custom_components.hello_state] Missing required configuration items in hello_state: text -16-03-12 14:37:37 ERROR (MainThread) [homeassistant.bootstrap] component hello_state failed to initialize -``` - After a start or a restart of Home Assistant the component will be visible in the frontend if the `configuration.yaml` file is up-to-date.

From 68c7833fe88c81bdd5a734a8b2c03382654d62f3 Mon Sep 17 00:00:00 2001 From: Steven Webb Date: Thu, 29 Dec 2016 09:24:30 -0500 Subject: [PATCH 057/123] Create configuration_yaml_by_cy1701 (#1667) * Create configuration_yaml_by_cy1701 my configuration for the cookbook * Update configuration_yaml_by_cy1701 Corrected format. --- source/_cookbook/configuration_yaml_by_cy1701 | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 source/_cookbook/configuration_yaml_by_cy1701 diff --git a/source/_cookbook/configuration_yaml_by_cy1701 b/source/_cookbook/configuration_yaml_by_cy1701 new file mode 100644 index 00000000000..783fa134afe --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_cy1701 @@ -0,0 +1,10 @@ +layout: page +title: "Configuration.yaml by cy1701" +description: "" +date: 2016-12-28 20:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/cy1701/Home-Assistant-Configuration From e0cab64772ae987890b4e1c741a15249a16939d2 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 29 Dec 2016 19:27:22 +0100 Subject: [PATCH 058/123] Fix header --- source/_cookbook/configuration_yaml_by_cy1701 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_cookbook/configuration_yaml_by_cy1701 b/source/_cookbook/configuration_yaml_by_cy1701 index 783fa134afe..34e1c4cab4a 100644 --- a/source/_cookbook/configuration_yaml_by_cy1701 +++ b/source/_cookbook/configuration_yaml_by_cy1701 @@ -1,3 +1,4 @@ +--- layout: page title: "Configuration.yaml by cy1701" description: "" @@ -8,3 +9,4 @@ sharing: true footer: true ha_category: Example configuration.yaml ha_external_link: https://github.com/cy1701/Home-Assistant-Configuration +--- From 9283b0eddea2943167cdb0247c574b6ec2f65723 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 29 Dec 2016 19:50:32 +0100 Subject: [PATCH 059/123] Update /apt/history --- source/developers/rest_api.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index 1903af9863d..2bdf49b707b 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -192,7 +192,7 @@ $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ -H "Content-Type: application/json" http://localhost:8123/api/services ``` -#### {% linkable_title GET /api/history %} +#### {% linkable_title GET /api/history/period/<timestamp> %} Returns an array of state changes in the past. Each object contains further details for the entities. ```json @@ -227,13 +227,13 @@ Sample `curl` commands: ```bash $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ -H "Content-Type: application/json" \ - http://localhost:8123/api/history/period/2016-02-06 + http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00 ``` ```bash $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ -H "Content-Type: application/json" \ - http://localhost:8123/api/history/period/2016-02-06?filter_entity_id=sensor.temperature + http://localhost:8123/api/history/period/2016-12-29T00:00:00+02:00?filter_entity_id=sensor.temperature ``` #### {% linkable_title GET /api/states %} From ad1cd15cda9a7abda422e6b30c3c469736484cb6 Mon Sep 17 00:00:00 2001 From: linuxlurak Date: Fri, 30 Dec 2016 13:47:12 +0100 Subject: [PATCH 060/123] Update logger.markdown (#1674) --- source/_components/logger.markdown | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown index 3cb7a36d2f5..c6b2bc1072b 100644 --- a/source/_components/logger.markdown +++ b/source/_components/logger.markdown @@ -15,7 +15,11 @@ The logger component lets you define the level of logging activities in Home Ass To enable the logger in your installation, add the following to your `configuration.yaml` file: -By default log all messages and ignore events lower than critical for specified components. +To have a full log and log everything only this entry is needed (without any qualifier): +```yaml +logger: +``` +To log all messages and ignore events lower than critical for specified components. ```yaml # Example configuration.yaml entry @@ -26,7 +30,7 @@ logger: homeassistant.components.camera: critical ``` -By default ignore all messages lower than critical and log event for specified components. +To ignore all messages lower than critical and log event for specified components. ```yaml # Example configuration.yaml entry From b62bec2c92bc89980af3aae0d3e81b688bdb66c4 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 30 Dec 2016 13:57:14 +0100 Subject: [PATCH 061/123] Font size headings --- source/_components/device_tracker.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index 25691c3fb6d..754e89ef401 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -15,7 +15,7 @@ There are also trackers available which use different technologies like [MQTT](/ An [event](/getting-started/automation-trigger/#event-trigger) (`device_tracker_new_device`) will be fired when a device is discovered for the first time. -# {% linkable_title Configuring a `device_tracker` platform %} +## {% linkable_title Configuring a `device_tracker` platform %} To get started add the following lines to your `configuration.yaml` (example for Netgear): @@ -51,7 +51,7 @@ device_tracker: Multiple device trackers can be used in parallel, such as [Owntracks](/components/device_tracker.owntracks/#using-owntracks-with-other-device-trackers) and [Nmap](/components/device_tracker.nmap_tracker/). The state of the device will be determined by the source that reported last. -# {% linkable_title `known_devices.yaml` %} +## {% linkable_title `known_devices.yaml` %} Once `device_tracker` is enabled, a file will be created in your config dir named `known_devices.yaml`. Edit this file to adjust which devices to be tracked. From 96d90ec7fece9834b14ff77d1ae2b53ab611ec3b Mon Sep 17 00:00:00 2001 From: Dennis Sutch Date: Fri, 30 Dec 2016 09:20:05 -0500 Subject: [PATCH 062/123] Fix link to Manual Installation (#1676) Link to Manual Installation had incorrect capitalization and when used was not opening page to the Manual Installation linkable title. --- source/getting-started/installation-raspberry-pi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/installation-raspberry-pi.markdown b/source/getting-started/installation-raspberry-pi.markdown index c30b177cfcd..0158ec82858 100644 --- a/source/getting-started/installation-raspberry-pi.markdown +++ b/source/getting-started/installation-raspberry-pi.markdown @@ -12,7 +12,7 @@ footer: true ### {% linkable_title Installation %} There's currently three documented ways to install Home Assistant on a Raspberry Pi. - - [Manual installation](/getting-started/installation-raspberry-pi/#Manual-Installation). Following this guide doing each step manually. This is highly recommended as a first installation since you get a good overview of the installation. + - [Manual installation](/getting-started/installation-raspberry-pi/#manual-installation). Following this guide doing each step manually. This is highly recommended as a first installation since you get a good overview of the installation. - [Hassbian image](/getting-started/installation-raspberry-pi-image). Basic installation with the same settings as following the manual installation guide. Some additional software is preinstalled to make installation quicker and easier. Installation uses `homeassistant` user. - [All-in-One Installer](/getting-started/installation-raspberry-pi-all-in-one/). Fabric based installation script that installs and compiles many of the things an advanced Home Assistant install is likely to need. Installation uses `homeassistant` user. From f7a97eb0c9d8a4ad77cd0f2b2ac9fba5a841733a Mon Sep 17 00:00:00 2001 From: chris-thorn Date: Fri, 30 Dec 2016 19:39:56 +0000 Subject: [PATCH 063/123] Corrected code block formatting for yaml in step 8 (#1678) --- source/_components/switch.wake_on_lan.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/switch.wake_on_lan.markdown b/source/_components/switch.wake_on_lan.markdown index bc7e314ccb1..510299accbc 100644 --- a/source/_components/switch.wake_on_lan.markdown +++ b/source/_components/switch.wake_on_lan.markdown @@ -51,7 +51,7 @@ from Home Assistant running on another Linux computer (the **server**). 6. On the **target**, we need to let the hass user execute the program needed to suspend/shut down the target computer. I'm using `pm-suspend`, use `poweroff` to turn off the computer. First, get the full path: `which pm-suspend`. On my system, this is `/usr/sbin/pm-suspend`. 7. On the **target**, using an account with sudo access (typically your main account), `sudo visudo`. Add this line last in the file: `hass ALL=NOPASSWD:/usr/sbin/pm-suspend`, where you replace `hass` with the name of your user on the target, if different, and `/usr/sbin/pm-suspend` with the command of your choice, if different. 8. On the **server**, add the following to your configuration, replacing TARGET with the target's name: -``` yaml +```yaml switch: - platform: wake_on_lan name: "TARGET" From aaf4f7b05204ad1a90918fb0bffb4303ab8cfee7 Mon Sep 17 00:00:00 2001 From: MrMep Date: Fri, 30 Dec 2016 20:40:41 +0100 Subject: [PATCH 064/123] Update keyboard_remote.markdown (#1677) The option name is "type", not "key_value", see source. --- source/_components/keyboard_remote.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown index f5fdf73b1e0..62dd5844035 100644 --- a/source/_components/keyboard_remote.markdown +++ b/source/_components/keyboard_remote.markdown @@ -24,13 +24,13 @@ The `evdev` package is used to interface with the keyboard and thus this is Linu # Example configuration.yaml entry keyboard_remote: device_descriptor: '/dev/input/by-id/foo' - key_value: 'key_up' + type: 'key_up' ``` Configuration variables: - **device_descriptor** (*Required*): List of URLS for your feeds. -- **key_value** (*Required*): Possible values are `key_up`, `key_down`, and `key_hold`. Be careful, `key_hold` will fire a lot of events. +- **type** (*Required*): Possible values are `key_up`, `key_down`, and `key_hold`. Be careful, `key_hold` will fire a lot of events. And an automation rule to breathe life into it: From ce743ec933c304ccd908ab5eebd428f3f2a4cc64 Mon Sep 17 00:00:00 2001 From: chris-thorn Date: Fri, 30 Dec 2016 19:42:33 +0000 Subject: [PATCH 065/123] Changed "sensor.sab_..." to "sensor.sabnzbd_..." (#1679) --- source/_components/sensor.sabnzbd.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown index f769a862920..8b2a7fe0c8c 100644 --- a/source/_components/sensor.sabnzbd.markdown +++ b/source/_components/sensor.sabnzbd.markdown @@ -48,15 +48,15 @@ Configuration variables: - **disk_size**: Disk size of the storage location - **disk_free**: Free disk space at the storage location -Note that this will create sensors under the name 'sab' and NOT 'sabnzbd' as follows: +Note that this will create the following sensors: ``` - - sensor.sab_status - - sensor.sab_speed - - sensor.sab_queue - - sensor.sab_left - - sensor.sab_disk - - sensor.sab_disk_free + - sensor.sabnzbd_status + - sensor.sabnzbd_speed + - sensor.sabnzbd_queue + - sensor.sabnzbd_left + - sensor.sabnzbd_disk + - sensor.sabnzbd_disk_free ``` As always, you can determine the names of sensors by looking at the dev-state page `< >` in the web interface. From 37fa5aa2e1947dbef55d94d0387a4df16272bba5 Mon Sep 17 00:00:00 2001 From: Jim Rollenhagen Date: Sun, 1 Jan 2017 14:59:00 -0500 Subject: [PATCH 066/123] Fix formatting error in Samsung TV component docs --- source/_components/media_player.samsungtv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 0374c23a708..7d7daa2b89b 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -29,7 +29,7 @@ media_player: Configuration variables: -- **host** (*Required*): The IP of the Samsung Smart TV, eg. `192.168.0.10^. +- **host** (*Required*): The IP of the Samsung Smart TV, eg. `192.168.0.10`. - **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 55000. - **name** (*Optional*): The name you would like to give to the Samsung Smart TV. - **timeout** (*Optional*): The time-out for the communication with the TV. Defaults to 0. From 174a5019150ab7b14f256990f66d69010c4b4b84 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 3 Jan 2017 19:33:38 +0100 Subject: [PATCH 067/123] Add script s we no longer host it in the main repo (fixes #1682) --- .../autostart-upstart.markdown | 108 +++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/source/getting-started/autostart-upstart.markdown b/source/getting-started/autostart-upstart.markdown index f11daea8cff..3db73e5591f 100644 --- a/source/getting-started/autostart-upstart.markdown +++ b/source/getting-started/autostart-upstart.markdown @@ -17,7 +17,113 @@ $ ps -p 1 -o comm= If the preceding command returns the string `init`, you are likely using Upstart. -Upstart will launch init scripts that are located in the directory `/etc/init.d/`. A sample init script for systems using Upstart is maintained by this project. +Upstart will launch init scripts that are located in the directory `/etc/init.d/`. A sample init script for systems using Upstart could look like the sample below. + +```bash +#!/bin/sh +### BEGIN INIT INFO +# Provides: hass +# Required-Start: $local_fs $network $named $time $syslog +# Required-Stop: $local_fs $network $named $time $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Home\ Assistant +### END INIT INFO + +# /etc/init.d Service Script for Home Assistant +# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh +# +# Installation: +# 1) If any commands need to run before executing hass (like loading a +# virutal environment), put them in PRE_EXEC. This command must end with +# a semicolon. +# 2) Set RUN_AS to the username that should be used to execute hass. +# 3) Copy this script to /etc/init.d/ +# sudo cp hass-daemon /etc/init.d/hass-daemon +# sudo chmod +x /etc/init.d/hass-daemon +# 4) Register the daemon with Linux +# sudo update-rc.d hass-daemon defaults +# 5) Install this service +# sudo service hass-daemon install +# 6) Restart Machine +# +# After installation, HA should start automatically. If HA does not start, +# check the log file output for errors. +# /var/opt/homeassistant/home-assistant.log + +PRE_EXEC="" +RUN_AS="USER" +PID_FILE="/var/run/hass.pid" +CONFIG_DIR="/var/opt/homeassistant" +FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon" +REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1" + +start() { + if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then + echo 'Service already running' >&2 + return 1 + fi + echo 'Starting service…' >&2 + local CMD="$PRE_EXEC hass $FLAGS $REDIRECT;" + su -c "$CMD" $RUN_AS + echo 'Service started' >&2 +} + +stop() { + if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then + echo 'Service not running' >&2 + return 1 + fi + echo 'Stopping service…' >&2 + kill -3 $(cat "$PID_FILE") + while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; + echo 'Service stopped' >&2 +} + +install() { + echo "Installing Home Assistant Daemon (hass-daemon)" + echo "999999" > $PID_FILE + chown $RUN_AS $PID_FILE + mkdir -p $CONFIG_DIR + chown $RUN_AS $CONFIG_DIR +} + +uninstall() { + echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " + local SURE + read SURE + if [ "$SURE" = "yes" ]; then + stop + rm -fv "$PID_FILE" + echo "Notice: The config directory has not been removed" + echo $CONFIG_DIR + update-rc.d -f hass-daemon remove + rm -fv "$0" + echo "Home Assistant Daemon has been removed. Home Assistant is still installed." + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + install) + install + ;; + uninstall) + uninstall + ;; + restart) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|install|uninstall}" +esac +``` To install this script, download it, tweak it to you liking, and install it by following the directions in the header. This script will setup Home Assistant to run when the system boots. To start/stop Home Assistant manually, issue the following commands: From 0b4b22688f9a5491fc5904331bd96852a29c1eb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Tue, 3 Jan 2017 19:41:12 +0100 Subject: [PATCH 068/123] Overriding build-components within subfolders. (#1705) It was not explained that you had to create a folder inside `config/custom_components` if the original component was also in a subfolder. --- source/developers/component_loading.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/component_loading.markdown b/source/developers/component_loading.markdown index 35b50ee975c..f57148ec8b5 100644 --- a/source/developers/component_loading.markdown +++ b/source/developers/component_loading.markdown @@ -17,7 +17,7 @@ A component will be loaded on start if a section (ie. `light:`) for it exists in Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.

-You can override a built-in component by having a component with the same name in your config/custom_components folder. This is not recommended and will probably break things! +You can override a built-in component by having a component with the same name in your config/custom_components folder. If the build-in component is inside a subfolder, take care to place your customization in a folder with the same name in config/custom_components/*folder*. Note that overriding build-in components is not recommended and will probably break things!

From c48b484265246406828ca2f106e8a6bb4fde6ec8 Mon Sep 17 00:00:00 2001 From: Joeboyc2 Date: Tue, 3 Jan 2017 18:41:51 +0000 Subject: [PATCH 069/123] Updated Configuration variables text (#1704) The text for the configuration variables was not relevent to the listed variables. i have updated it in my own words, happy for this to be changed to conform to other documents, are there other variables to be added? --- source/_components/light.hyperion.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index 576f486f1ac..c2a79f5e95a 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -24,5 +24,5 @@ light: Configuration variables: -- **host** (*Optional*): To enable the automatic addition of lights on startup. -- **port** (*Optional*): A list of devices with their ip address and a custom name to use in the frontend. +- **host** (*Optional*): IP Address of the device the Hyperion service is running on. +- **port** (*Optional*): The Port used to comunicate with the Hyperion service (defualt is 19444). From a827eb3e15d5637fad9c782e297c6327afdcd091 Mon Sep 17 00:00:00 2001 From: Joeboyc2 Date: Tue, 3 Jan 2017 18:44:52 +0000 Subject: [PATCH 070/123] Final Example was incorrect (#1702) i have updated the example as this was not working in my config --- source/_components/sensor.speedtest.markdown | 22 ++++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/_components/sensor.speedtest.markdown b/source/_components/sensor.speedtest.markdown index 4bba84884fa..0727b371e2e 100644 --- a/source/_components/sensor.speedtest.markdown +++ b/source/_components/sensor.speedtest.markdown @@ -74,15 +74,15 @@ Everyday at 12:30AM, 6:30AM, 12:30PM, 6:30PM: ```yaml # Example configuration.yaml entry sensor: - platform: speedtest - minute: 30 - hour: - - 0 - - 6 - - 12 - - 18 - monitored_conditions: - - ping - - download - - upload + - platform: speedtest + minute: 30 + hour: + - 0 + - 6 + - 12 + - 18 + monitored_conditions: + - ping + - download + - upload ``` From a1de0cd920c0204b8d6d7ca8f08905bb510772be Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Tue, 3 Jan 2017 18:48:17 +0000 Subject: [PATCH 071/123] Renamed service in description (#1695) Units variable description still referred to forecast.io rather than Dark Sky --- source/_components/sensor.darksky.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index b878a599d74..153c29cb12f 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -84,7 +84,7 @@ Configuration variables: - **apparent_temperature_min**: Today's expected apparent low temperature. - **precip_intensity_max**: Today's expected maximum intensity of precipitation. - **units** (*Optional*): Specify the unit system. Default to `si` or `us` based on the temperature preference in Home Assistant. Other options are `auto`, `us`, `si`, `ca`, and `uk2`. -`auto` will let forecast.io decide the unit system based on location. +`auto` will let Dark Sky decide the unit system based on location. - **update_inverval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats: - `update_interval: 'HH:MM:SS'` - `update_interval: 'HH:MM'` From 07ee743baa929e15142156d4a6d260aed948e498 Mon Sep 17 00:00:00 2001 From: Georgi Kirichkov Date: Tue, 3 Jan 2017 20:49:13 +0200 Subject: [PATCH 072/123] Updates alarm_control_panel Example (#1688) The example was out of date using 'platform: state' in the condition, instead of 'condition: state' --- source/_components/alarm_control_panel.manual.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown index fd1807019fd..e500f2603ec 100644 --- a/source/_components/alarm_control_panel.manual.markdown +++ b/source/_components/alarm_control_panel.manual.markdown @@ -54,7 +54,7 @@ automation: entity_id: sensor.window state: 'open' condition: - - platform: state + - condition: state entity_id: alarm_control_panel.ha_alarm state: armed_away action: From 3ed332e8b31990ef075c4287c87f11770e52afb6 Mon Sep 17 00:00:00 2001 From: LightIsLife Date: Tue, 3 Jan 2017 19:50:53 +0100 Subject: [PATCH 073/123] AiO install requires "pip install lxml" (#1686) In addition to the added packages, it is necessary to install lxml within the virtual environment if AiO install has been chosen (I did not verify with other installs). Otherwise HASS will not start and not give any error messages when device_tracker with Fritz is used. --- source/_components/device_tracker.fritz.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/device_tracker.fritz.markdown b/source/_components/device_tracker.fritz.markdown index fa7ae119426..40d7bfa985d 100644 --- a/source/_components/device_tracker.fritz.markdown +++ b/source/_components/device_tracker.fritz.markdown @@ -17,7 +17,7 @@ The `fritz` platform offers presence detection by looking at connected devices t

It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml -

+If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml; be patient this will take a while.

To use an Fritz!Box router in your installation, add the following to your `configuration.yaml` file: From 6f31eef44dfe34c9d94bce8911571746f966a8d7 Mon Sep 17 00:00:00 2001 From: Eric Thompson Date: Tue, 3 Jan 2017 11:10:50 -0800 Subject: [PATCH 074/123] fix "Sonos" typo in discovery docs (#1684) --- source/_components/discovery.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 276571e3f81..4a97acd53e4 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -21,7 +21,7 @@ Home Assistant can discover and automatically configure zeroconf/mDNS and uPnP d * Plex media server * Panasonic Viera * Roku media player - * Sono Speaker + * Sonos Speakers * Yamaha media player * Logitech media server (Squeezebox) * DirecTV From 04e111372d89bcd2f527817004d4ab1d83e7257f Mon Sep 17 00:00:00 2001 From: Brian J King Date: Tue, 3 Jan 2017 13:11:48 -0600 Subject: [PATCH 075/123] Fixing broken formatting on Alexa component page (#1685) Fixes broken formatting on [Alexa Component Page](https://home-assistant.io/components/alexa/) flash briefing skill --- source/_components/alexa.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index 1c32f9d02fd..db6115b352b 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -355,7 +355,7 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf - Hit "Next" - Test - Having passed all validations to reach this screen you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. -- To invoke your flash briefing, open the Alexa app on your phone or go to [Alexa|http://alexa.amazon.com/], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". +- To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Setings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". [amazon-dev-console]: https://developer.amazon.com [flash-briefing-api]: https://developer.amazon.com/alexa-skills-kit/flash-briefing @@ -364,3 +364,4 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf [small-icon]: /images/components/alexa/alexa-108x108.png [templates]: /topics/templating/ [zero-three-one]: /blog/2016/10/22/flash-briefing-updater-hacktoberfest/ +[alexa-settings-site]: http://alexa.amazon.com/ From 51ade405ac95251f1373e32e224ab11b41f91d04 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 Jan 2017 22:52:44 +0100 Subject: [PATCH 076/123] Add bruh tree post --- ...3-control-my-christmas-tree-stats.markdown | 44 ++++++++++++++++++ .../2017-01-bruh-christmas/christmas-tree.gif | Bin 0 -> 4007019 bytes .../blog/2017-01-bruh-christmas/stats.png | Bin 0 -> 18828 bytes 3 files changed, 44 insertions(+) create mode 100644 source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown create mode 100644 source/images/blog/2017-01-bruh-christmas/christmas-tree.gif create mode 100644 source/images/blog/2017-01-bruh-christmas/stats.png diff --git a/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown b/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown new file mode 100644 index 00000000000..8303520eedd --- /dev/null +++ b/source/_posts/2017-01-03-control-my-christmas-tree-stats.markdown @@ -0,0 +1,44 @@ +--- +layout: post +title: "Control My Christmas Tree Stats" +description: "I used Home Assistant for a publicly controllable Christmas tree and it worked great!" +date: 2017-01-03 18:00:00 +0000 +date_formatted: "January 3, 2017" +author: Ben +author_twitter: bruhautomation +comments: true +categories: community +og_image: /images/blog/2017-01-bruh-christmas/christmas-tree.gif +--- + +Hello and Happy New Year! + +I am not Paulus. My name is Ben. I’m the creator of the [BRUH Automation YouTube channel][bruh]. If you’ve ever seen any of my videos then you’ll know I love home automation and Home Assistant. + +I wanted to share some exciting stats from one of my latest projects - [Control My Christmas tree!](https://github.com/bruhautomation/BRUH-Christmas-Tree-2016) For this project, I created a Home Assistant instance on a Raspberry Pi 2 that was publically accessible via DuckDNS. Paulus was great in helping me disable several of the developer services that could have been exploited to disable the Home Assistant instance. + +I added three devices to the Home Assistant instance - a Wemo Insight, Sonoff Switch (running MQTT firmware), and a DIY MQTT Digital LED strip. After adding a few 3D printed Star War decorations, the tree was ready to go! + +

+ + The Christmas tree in action. +

+ +During the time by tree was set up, I had 7,366 visitors from 88 countries connect to my Home Assistant instance. This generated an estimated 100,000 clicks on the switches in my Home Assistant instance - thanks in part to some folks who posted up with macros for 6-8 hour stretches. + +

+ + View counts of the video. +

+ +I’m very excited to report that Home Assistant didn’t crash a single time. In fact, it didn’t even bog down or need to be restarted. The Wemo Insight and Sonoff relays were incredibly resilient, as well. I only had one Sonoff failure and two Wemo Insight failures both of which were resolved by power cycling them. The digital LED strips also fared pretty well, hanging up only twice, aside from a loose connector. + +I would like to send a big thank you to the Home Assistant developers who have worked so hard on making Home Assistant run so well. This project is a testament to your hard work on making Home Assistant one of the best home automation platforms out there. Thank you! + +I’m looking forward to continuing my home automation adventures with Home Assistant and I can’t wait for next Christmas with an even bigger and badder tree. :) + +Wishing everyone the best in 2017! + +Cheers! -Ben + +[bruh]: https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w diff --git a/source/images/blog/2017-01-bruh-christmas/christmas-tree.gif b/source/images/blog/2017-01-bruh-christmas/christmas-tree.gif new file mode 100644 index 0000000000000000000000000000000000000000..28b6e2b19ba89a0cdb5f884b7954539a57dca7e1 GIT binary patch literal 4007019 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 &pAQS@^%An`BJZy;ax5*7R)~N-rb6a@o3J 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%0DErZaWqfod*9Ut?P6B=#Vz%`Q=)@UgqrO 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 g5MTx?K@g>(M>TQO5l0J#l+p(fNMhAU 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ãTWLBu4~b5GGI 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%0D{>I6-KPO$1eLT-vY4kl}>9n3l# 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 z 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 From bbfecba5cd3d897d29556bbd121236edf257c0a9 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 12 Jan 2017 17:15:17 -0800 Subject: [PATCH 111/123] Update _config.yml now, not index.html --- source/developers/releasing.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/releasing.markdown b/source/developers/releasing.markdown index 10cffe47535..1525f30b0e6 100644 --- a/source/developers/releasing.markdown +++ b/source/developers/releasing.markdown @@ -24,7 +24,7 @@ This page describes the steps for publishing a new Home Assistant release. 1. Create a blog post in `next` and base it on the text of the PR in the main repository. Add images, additional text, links, etc. if it adds value. Tag each platform/component in a message to documentation. 2. Create missing documentation as stumbs in `next`. -3. Update the link on the frontpage (`source/index.html`) to link to the new release blog post and version number. +3. Update `config.yml` with link to the new release blog post and version number (at the bottom of the file). 4. Create a pull request from `next` to `current` with the upcoming release number as the title. 5. Merge `current` into `next` (`$ git checkout next && git merge current`) to make the PR mergeable. 6. Merge pull request (blog post, updated frontpage, and all new documentation) to `current`. From 35f839b379684e5fda08516688896ae99736db9d Mon Sep 17 00:00:00 2001 From: godloth Date: Fri, 13 Jan 2017 17:50:56 -0500 Subject: [PATCH 112/123] made it more usable (#1761) updated the file to make it more usable and readable on the website --- source/_components/device_tracker.gpslogger.markdown | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/device_tracker.gpslogger.markdown index cbba3e16f65..e49430a54b4 100644 --- a/source/_components/device_tracker.gpslogger.markdown +++ b/source/_components/device_tracker.gpslogger.markdown @@ -25,7 +25,11 @@ device_tracker: - [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) -To configure GPSLogger, you must set up the app to send a `GET` request to your Home Assistant server at `http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT`. Make sure to include the API password if you have configured a password in Home Assistant (add `&api_password=` to the end of the URL). Configure that options under "General Options": +To configure GPSLogger, you must set up the app to send a `GET` request to your Home Assistant server at +```yaml +`http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT` +``` +. Make sure to include the API password if you have configured a password in Home Assistant (add `&api_password=` to the end of the URL). Configure that options under "General Options": - Start on boot: yes - Start on app launch: yes @@ -34,7 +38,10 @@ Set the URL under "General Options -> Logging details": - Log to GPX: no - Log to KML: no -- Log to custom URL: yes and set `http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT` (be sure you include API password (`&api_password=`) if needed, or you can also use HTTP Basic authentication `http://:@/api/gpslogger...`) +- Log to custom URL: yes and set +```yaml +`http:///api/gpslogger?latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT` (be sure you include API password (`&api_password=`) if needed, or you can also use HTTP Basic authentication `http://:@/api/gpslogger...`) +``` - Log to OpenGTS Server: no - Log to Plain Text: no - Log to NMEA: no From b9fc2c3f170ad042890fc3b03fd0b9e647d108e2 Mon Sep 17 00:00:00 2001 From: SilvrrGIT Date: Fri, 13 Jan 2017 16:54:04 -0600 Subject: [PATCH 113/123] Clarification of formatting and options (#1759) Added main component (light:) as many are missing this requirement when adding the yeelights to their config files. Also expanded the example config to include two entries, also to demonstrate proper config setup for this platform. --- source/_components/light.yeelight.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 568a6364693..d8077071cc7 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -18,10 +18,13 @@ To enable those lights, add the following lines to your `configuration.yaml` fil ```yaml # Example configuration.yaml entry - - platform: yeelight +light: + platform: yeelight devices: 192.168.1.25: - name: palier + name: Front Door + 192.168.1.13 + name: Living Room ``` Configuration variables: From 25cf09f3f700f02abea577a36e8489d2957f0384 Mon Sep 17 00:00:00 2001 From: Joeboyc2 Date: Sat, 14 Jan 2017 09:28:50 +0000 Subject: [PATCH 114/123] Amendments to the open paragraph (#1764) I have made some amendments to the top section to ensure the right process gets followed, before it was too easy to just copy the code without reading further --- source/getting-started/updating.markdown | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/getting-started/updating.markdown b/source/getting-started/updating.markdown index cceed8df558..532723cb6d0 100644 --- a/source/getting-started/updating.markdown +++ b/source/getting-started/updating.markdown @@ -9,20 +9,18 @@ sharing: true footer: true --- +The upgrade process differed depending on the installtion you have, review the documentaion specific to your install [HASSbian](/getting-started/installation-raspberry-pi-image/#update-home-assistant-on-hassbian), [Raspberry Pi All-In-One Installer](/getting-started/installation-raspberry-pi-all-in-one/#upgrading), [Vagrant](/getting-started/installation-vagrant/), or [Virtualenv](/getting-started/installation-virtualenv/#upgrading-home-assistant). The default way to update Home Assistant to the latest release, when available, is: ```bash $ pip3 install --upgrade homeassistant -``` - -Different installation methods as [HASSbian](/getting-started/installation-raspberry-pi-image/#update-home-assistant-on-hassbian), [Raspberry Pi All-In-One Installer](/getting-started/installation-raspberry-pi-all-in-one/#upgrading), [Vagrant](/getting-started/installation-vagrant/), or [Virtualenv](/getting-started/installation-virtualenv/#upgrading-home-assistant) may have an alternative way for updating Home Assistant. +``` After updating, you must restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/getting-started/autostart/) daemon (if applicable) -

- To avoid permission errors, the upgrade must be run as the same user as the installation was completed. + To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSbian](/getting-started/installation-raspberry-pi-image/), [Raspberry Pi All-In-One Installer](/getting-started/installation-raspberry-pi-all-in-one/), [Vagrant](/getting-started/installation-vagrant/), or [Virtualenv](/getting-started/installation-virtualenv)t.

[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant. From 256deafb8d78e2a2b6c4382e1444efb670da7992 Mon Sep 17 00:00:00 2001 From: Britton Clapp Date: Sat, 14 Jan 2017 03:36:38 -0600 Subject: [PATCH 115/123] Update z-wave.markdown (#1754) Added a short section to clearly explain how to add non-secure Z-Wave devices. --- source/getting-started/z-wave.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/getting-started/z-wave.markdown b/source/getting-started/z-wave.markdown index 8ed1676e145..b7c2b7381b7 100644 --- a/source/getting-started/z-wave.markdown +++ b/source/getting-started/z-wave.markdown @@ -110,6 +110,10 @@ $ ls /dev/cu.usbmodem* Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/).

+### {% linkable_title Adding Devices %} + +To add a Z-Wave device to your system, go to the Services menu and select the `zwave` domain, and select the `add-node` service. Then find your device's add button and press that as well. + ### {% linkable_title Adding Security Devices %} Security Z-Wave devices require a network key before being added to the network using the `zwave.add_node_secure` service. You must edit the `options.xml` file, located in your `python-openzwave config_path` to use a network key before adding these devices. From ef2e982b3710ca40d10d659b7e507003e1ac3c94 Mon Sep 17 00:00:00 2001 From: nordlead2005 Date: Sat, 14 Jan 2017 04:39:20 -0500 Subject: [PATCH 116/123] HTML5 notification install and usage clarification (#1758) Added additional requirements and clarification to getting HTML 5 push notifications working. These were stumbling blocks for me and some of the information I gathered in the forums, some I just guessed at. --- source/_components/notify.html5.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index a5c935f16a1..744788753b0 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -46,7 +46,9 @@ The `html5` platform can only function if all of the following requirements are * You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. * Your Home Assistant instance is exposed to the world. -* You have configured SSL for your Home Assistant. It doesn't need to be configured in Home Assistant though, i.e. you can be running nginx in front of Home Assistant and this will still work. +* If using a proxy, basic auth must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. +* pywebpush must be installed. libffi-dev, libpython-dev, and libssl-dev must be installed prior to pywebpush (i.e. pywebpush probably won't automatically install). +* You have configured SSL for your Home Assistant. It doesn't need to be configured in Home Assistant though, i.e. you can be running nginx in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed) * You are willing to accept the notification permission in your browser. ### {% linkable_title Setting up %} @@ -64,6 +66,8 @@ Assuming you have already added the platform to your configuration: The `html5` platform accepts a standard notify payload. However, there are also some special features built in which you can control in the payload. +Any json examples below can be [converted to YAML](https://www.json2yaml.com/) for automations. + #### {% linkable_title Actions %} Chrome supports notification actions, which are configurable buttons that arrive with the notification and can cause actions on Home Assistant to happen when pressed. You can send [up to 2 actions](https://cs.chromium.org/chromium/src/third_party/WebKit/public/platform/modules/notifications/WebNotificationConstants.h?q=maxActions&sq=package:chromium&dr=CSs&l=14). From 8e57044896675c8caaa5bdb3cccd0d1168fc5397 Mon Sep 17 00:00:00 2001 From: Fredrik Lindqvist Date: Sat, 14 Jan 2017 19:40:17 +0100 Subject: [PATCH 117/123] Revert "Revert "Describe using language in a TTS service."" (#1756) --- source/_components/tts.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/tts.markdown b/source/_components/tts.markdown index 8fb93e67aa1..8e9fac152f7 100644 --- a/source/_components/tts.markdown +++ b/source/_components/tts.markdown @@ -55,6 +55,7 @@ service: tts.google_say data: message: 'May the Force be with you.' ``` +Say to the `media_player.floor` device entitie: ```yaml service: tts.google_say @@ -63,6 +64,16 @@ data: message: 'May the Force be with you.' ``` +Say to the `media_player.floor` device entitie in french: + +```yaml +service: tts.google_say +entity_id: media_player.floor +data: + message: 'Que la force soit avec toi.' + language: 'fr' +``` + With a template: ```yaml @@ -72,6 +83,7 @@ data_template: cache: false ``` + ## {% linkable_title Cache %} The component have two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period. From 8cbb08bb2aa05b62cb9115157ac01e616f28f8bd Mon Sep 17 00:00:00 2001 From: Russ Nelson Date: Sat, 14 Jan 2017 23:57:37 -0500 Subject: [PATCH 118/123] Minor typo fix. --- source/developers/component_loading.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/developers/component_loading.markdown b/source/developers/component_loading.markdown index f57148ec8b5..342aa60b7ed 100644 --- a/source/developers/component_loading.markdown +++ b/source/developers/component_loading.markdown @@ -17,7 +17,7 @@ A component will be loaded on start if a section (ie. `light:`) for it exists in Once loaded, a component will only be setup if all dependencies can be loaded and are able to setup. Keep an eye on the logs to see if your component could be loaded and initialized.

-You can override a built-in component by having a component with the same name in your config/custom_components folder. If the build-in component is inside a subfolder, take care to place your customization in a folder with the same name in config/custom_components/*folder*. Note that overriding build-in components is not recommended and will probably break things! +You can override a built-in component by having a component with the same name in your config/custom_components folder. If the built-in component is inside a subfolder, take care to place your customization in a folder with the same name in config/custom_components/*folder*. Note that overriding built-in components is not recommended and will probably break things!

From 8f20b9dd65577456cd26f785ed6889adabb3e359 Mon Sep 17 00:00:00 2001 From: andrey-git Date: Sun, 15 Jan 2017 12:36:40 +0200 Subject: [PATCH 119/123] Add print_config_parameter service to z-wave (#1698) * Add documentation for print_config_parameter service to z-wave. * Add documentation for 'debug' customization attribute. * Sort services alphabetically. --- source/getting-started/z-wave.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/getting-started/z-wave.markdown b/source/getting-started/z-wave.markdown index b7c2b7381b7..8e0e7ebc224 100644 --- a/source/getting-started/z-wave.markdown +++ b/source/getting-started/z-wave.markdown @@ -81,6 +81,7 @@ Configuration variables: - **ignored** (*Optional*): Ignore this entitiy completely. It won't be shown in the Web Interface and no events are generated for it. - **refresh_value** (*Optional*): Enable refreshing of the node value. Only light component uses this. Defaults to 2 second delay. - **delay** (*Optional*): Specify the delay to wait for refresh of node value if you want other than 2 seconds. +- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to False. To find the path of your Z-Wave USB stick or module, run: @@ -226,16 +227,17 @@ The `zwave` component exposes multiple services to help maintain the network. | ------- | ----------- | | add_node | Put the Z-Wave controller in inclusion mode. Allows one to add a new device to the Z-Wave network.| | add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows one to add a new device with secure communications to the Z-Wave network. | -| change_association | Add or remove an association in the Z-Wave network | cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decides you are not going to do it, then this must be used to stop the inclusion/exclusion command. | +| change_association | Add or remove an association in the Z-Wave network | | heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | +| print_config_parameter | Prints Z-wave node's config parameter value to the log. | remove_node | Put the Z-Wave controller in exclusion mode. Allows one to remove a device from the Z-Wave network.| +| rename_node | Sets a node's name. Requires an `entity_id` and `name` field. | | set_config_parameter | Let's the user set a config parameter to a node. | soft_reset | Tells the controller to do a "soft reset". This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command.| | start_network | Starts the Z-Wave network.| | stop_network | Stops the Z-Wave network.| | test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead".| -| rename_node | Sets a node's name. Requires an `entity_id` and `name` field. | The `soft_reset` and `heal_network` commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component, the option defaults to `true` but can be disabled by setting `auto_heal` to false. Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang. If you're having issues with your Z-Wave network try disabling this automation. From 444ddc263cdd2b7ae2e2a436f43ae06276e99d6d Mon Sep 17 00:00:00 2001 From: Jed Lippold Date: Sun, 15 Jan 2017 09:46:36 -0500 Subject: [PATCH 120/123] Adds windows documentation to system monitor (#1778) --- .../_components/sensor.systemmonitor.markdown | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index be8be3f0f42..1e52ffb93e8 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -58,3 +58,26 @@ The table contains types and their argument to use in your `configuration.yaml` | last_boot | | | since_last_boot | | + +**Windows Specific:** + +When running this component on windows, `eth0` is not valid a valid network name. Typically, the default interface would be called `Local Area Connection`, so your config might look like + +``` +sensor: + - platform: systemmonitor + resources: + - type: network_in + arg: 'Local Area Connection' +``` + +If you need to use some other interface, open a command prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ip_config` might look like + +``` +Wireless LAN adapter Wireless Network Connection: + + Media State . . . . . . . . . . . : Media disconnected + Connection-specific DNS Suffix . : +``` + +Where the name is `Wireless Network Connection` From a56fc22fe3bc639261613ab53d9751545b67be32 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 14 Jan 2017 10:44:53 +0100 Subject: [PATCH 121/123] Update formatting --- source/_components/notify.html5.markdown | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 744788753b0..6d618ba4e1f 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -32,23 +32,23 @@ Configuration variables: - **gcm_sender_id** (*Required if pushing to Chrome*): The sender ID provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. ### {% linkable_title Getting ready for Chrome %} -Create new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard) -Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain -After that, go to [https://console.firebase.google.com](https://console.firebase.google.com) and select import Google project, select the project you created -Then, click the clogwheel on top left and select Project settings -Select Cloud messaging tab -if under server key is button Regenerate key, click that + +- Create new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard). +- Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain. +- After that, go to [https://console.firebase.google.com](https://console.firebase.google.com) and select import Google project, select the project you created. +- Then, click the clogwheel on top left and select "Project settings". +- Select Cloud messaging tab if under server key is button Regenerate key, click that. ### {% linkable_title Requirements %} The `html5` platform can only function if all of the following requirements are met: -* You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. +* You are using Chrome and/or Firefox on any desktop platform, ChromeOS, or Android. * Your Home Assistant instance is exposed to the world. -* If using a proxy, basic auth must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. -* pywebpush must be installed. libffi-dev, libpython-dev, and libssl-dev must be installed prior to pywebpush (i.e. pywebpush probably won't automatically install). -* You have configured SSL for your Home Assistant. It doesn't need to be configured in Home Assistant though, i.e. you can be running nginx in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed) +* If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. +* `pywebpush` must be installed. `libffi-dev`, `libpython-dev`, and `libssl-dev` must be installed prior to `pywebpush` (i.e. `pywebpush` probably won't automatically install). +* You have configured SSL for your Home Assistant. It doesn't need to be configured in Home Assistant though, i.e. you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed). * You are willing to accept the notification permission in your browser. ### {% linkable_title Setting up %} @@ -66,7 +66,7 @@ Assuming you have already added the platform to your configuration: The `html5` platform accepts a standard notify payload. However, there are also some special features built in which you can control in the payload. -Any json examples below can be [converted to YAML](https://www.json2yaml.com/) for automations. +Any JSON examples below can be [converted to YAML](https://www.json2yaml.com/) for automations. #### {% linkable_title Actions %} From 46955859c810c49002896f39f95f7da631e36a58 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 15 Jan 2017 15:54:12 +0100 Subject: [PATCH 122/123] Add Linux detail --- .../_components/sensor.systemmonitor.markdown | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index 1e52ffb93e8..836b0d4641f 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -58,12 +58,19 @@ The table contains types and their argument to use in your `configuration.yaml` | last_boot | | | since_last_boot | | +## {% linkable_title Linux specific %} -**Windows Specific:** - -When running this component on windows, `eth0` is not valid a valid network name. Typically, the default interface would be called `Local Area Connection`, so your config might look like +To retrieve all available network interfaces on a Linux System, execute the `ifconfig` command. +```bash +$ ifconfig -a | sed 's/[ \t].*//;/^$/d' ``` + +## {% linkable_title Windows specific %} + +When running this platform on Microsoft Windows, Typically, the default interface would be called `Local Area Connection`, so your configuration might look like: + +```yaml sensor: - platform: systemmonitor resources: @@ -71,9 +78,9 @@ sensor: arg: 'Local Area Connection' ``` -If you need to use some other interface, open a command prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ip_config` might look like +If you need to use some other interface, open a commandline prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ifconfig` might look like: -``` +```bash Wireless LAN adapter Wireless Network Connection: Media State . . . . . . . . . . . : Media disconnected From 7304efcb90cf3d9474efe7083fc94b501652a918 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 15 Jan 2017 17:48:13 +0100 Subject: [PATCH 123/123] Add fontend docs (fixes #1768) --- source/_components/frontend.markdown | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 source/_components/frontend.markdown diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown new file mode 100644 index 00000000000..976c6f506ef --- /dev/null +++ b/source/_components/frontend.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Frontend" +description: "Offers a web framework to serve files." +date: 2015-12-06 21:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "Other" +--- + +The `http` component serves all files and data required for the Home Assistant frontend. You only need to add this to your configuration file if you want to change any of the default settings. + +

+It's HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet. +

+ +```yaml +# Example configuration.yaml entry +frontend: +``` +