From 6c7313d437184432833753ea85d252b0a30db185 Mon Sep 17 00:00:00 2001 From: xifle Date: Fri, 18 Mar 2016 15:00:15 +0100 Subject: [PATCH 01/35] Added entry for Mold Indicator with detailed description and instructions for calibration --- .../_components/sensor.moldindicator.markdown | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 source/_components/sensor.moldindicator.markdown diff --git a/source/_components/sensor.moldindicator.markdown b/source/_components/sensor.moldindicator.markdown new file mode 100644 index 00000000000..83e241016a5 --- /dev/null +++ b/source/_components/sensor.moldindicator.markdown @@ -0,0 +1,33 @@ +--- +layout: component +title: "Mold Indicator" +description: "How to use the mold growth indication component in Home Assistant" +date: 2016-02-11 22:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +--- + +The Mold Indicator sensor component consumes information of two temperature sensors and a humidity sensor to give an indication for possible mold growth in your home. In case of bad ventilation and insulation, the indoor humidity may lead to condensation on cold surfaces as the windows or even walls. Condensation or a high relative humidity near those cold surfaces leads to a higher risk for mold growth. This sensor component estimates the temperature at a pre-calibrated critical point in the room (the coldest surface) and calculates the relative humidity of the air at that point. If the sensor value rises above approximately 70 percent, mold growth might occur and the room should be ventilated. At 100%, the air humidity condensates at the critical point. + +The sensor data may be used e.g. to signal bad air quality (too high air humidity) or to automate operation of indoor air humidifiers to keep the indoor humidity at an optimum. To use the Mold Indicator sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: mold_indicator + indoor_temp_sensor: sensor.temp + indoor_humidity_sensor: sensor.humidity + outdoor_temp_sensor: sensor.weather_temperature + calibration_factor: 2.0 # Needs to be calibrated to the critical point in the room +``` +In this case, the weather forecast temperature sensor is used for the outside temperature. + +## {% linkable_title Calibration %} + +The Mold Indicator sensor component needs to be calibrated in order to estimate the temperature at the critical point from the outdoor and indoor temperature. First find the coldest surface in the room (critical point), which is typically near the window frames, but depends on the insulation of your home. For calibration you need to measure the temperature at this critical point and simultaneously write down the values for the indoor- and outdoor temperature sensors used for the Mold Indicator. Be sure that there is a significant indoor to outdoor temperature difference to get the best calibration results. +With the three measured temperatures (in Celsius or Fahrenheit), the calibration_factor for your configuration file is given by: + +calibration_factor = (temp_indoor - temp_outdoor) / (temp_criticalpoint - temp_outdoor) \ No newline at end of file From ebcd226e602ce9578d59dac6314a1d376be10bae Mon Sep 17 00:00:00 2001 From: Ardi Mehist Date: Fri, 29 Apr 2016 16:53:09 +0100 Subject: [PATCH 02/35] Add logentries component doc --- source/_components/logentries.markdown | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 source/_components/logentries.markdown diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown new file mode 100644 index 00000000000..d1d43f4df07 --- /dev/null +++ b/source/_components/logentries.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Logentries" +description: "Send events to Logentries." +date: 2016-04-29 16:50 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: "History" +--- + +The `logentries` component makes it possible to log all state changes to [your Logentries account](http://logentries.com/) using Logentries Webhook endpoint and a token based log + +To use the `logentries` component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +logentries: + token: your-log-token-here + SSL: True +``` + +Configuration variables: + +- **token** (*Required*): Your Logentries log token +- **SSL** (*Optional*) From 6c1a02e1fd54976bde40b77b91262a06cb7b14b4 Mon Sep 17 00:00:00 2001 From: GreenTurtwig Date: Mon, 9 May 2016 12:56:09 +0100 Subject: [PATCH 03/35] Added the doc page for GPMDP --- .../_components/media_player.gpmdp.markdown | 37 ++++++++++++++++++ source/images/supported_brands/gpmdp.png | Bin 0 -> 12714 bytes 2 files changed, 37 insertions(+) create mode 100644 source/_components/media_player.gpmdp.markdown create mode 100644 source/images/supported_brands/gpmdp.png diff --git a/source/_components/media_player.gpmdp.markdown b/source/_components/media_player.gpmdp.markdown new file mode 100644 index 00000000000..202bbd00c8c --- /dev/null +++ b/source/_components/media_player.gpmdp.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Google Play Music Desktop Player (GPMDP)" +description: "Instructions how to integrate GPMDP into Home Assistant." +date: 2016-05-09 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: gpmdp.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.20 + +--- + + +The `GPMDP` platform allows you to control a [GPMDP](http://www.googleplaymusicdesktopplayer.com/) instance running on a computer from Home Assistant. + + +You will have first have to check "Enable playback API" in GPMDP's settings and then add an inbound rule to the firewall to allow access to port 5672 on the computer running GPMDP. + +Then just add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: gpmdp + address: IP_ADDRESS + name: NAME +``` + +Configuration variables: + +- **address** *Required*: IP address of the computer running GPMDP +- **name** *Optional*: Name of the player + diff --git a/source/images/supported_brands/gpmdp.png b/source/images/supported_brands/gpmdp.png new file mode 100644 index 0000000000000000000000000000000000000000..38a47c3d1ddc577fc82c8c964cae2ade7d07f556 GIT binary patch literal 12714 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 Dglp-x literal 0 HcmV?d00001 From fec0f58fe89927f2fad8be4817a5068d2358366c Mon Sep 17 00:00:00 2001 From: Nolan Date: Thu, 12 May 2016 08:01:07 -0500 Subject: [PATCH 04/35] ecobee notify component --- source/_components/notify.ecobee.markdown | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 source/_components/notify.ecobee.markdown diff --git a/source/_components/notify.ecobee.markdown b/source/_components/notify.ecobee.markdown new file mode 100644 index 00000000000..a8a4f93c2d2 --- /dev/null +++ b/source/_components/notify.ecobee.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Ecobee Notify" +description: "Instructions how to setup the Ecobee notify component within Home Assistant." +date: 2016-05-12 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ecobee.png +ha_category: Notify +ha_release: 0.20 +--- + +To get your Ecobee sensors working with Home Assistant, you must first have the main [Ecobee component](/components/ecobee/) loaded and running. Once you have that configured, you can setup this component to send messages to your thermostat. + +Add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + name: NOTIFIER_NAME + platform: ecobee +``` + +Configuration variables: + +- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **index** (*Optional*): If you have more than one thermostat, you can create a notifier for each one by providing the zero based index for each thermostat. (Default: 0) + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + From 9c1b035e5d27fd17076e539854e783d148a1cda9 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 12 May 2016 13:41:13 -0700 Subject: [PATCH 05/35] Actually document the Google Maps Travel Time sensor --- .../sensor.google_travel_time.markdown | 22 ++++++++++++++---- .../images/supported_brands/google_maps.png | Bin 0 -> 38871 bytes 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 source/images/supported_brands/google_maps.png diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown index be06fb1d94b..1667c1551a3 100644 --- a/source/_components/sensor.google_travel_time.markdown +++ b/source/_components/sensor.google_travel_time.markdown @@ -7,22 +7,36 @@ sidebar: true comments: false sharing: true footer: true -logo: +logo: google_maps.png ha_category: Sensor ha_iot_class: "Cloud Polling" ha_release: 0.19 --- -Sensor to provide travel time from Google maps api. +Sensor to provide travel time from the [Google Distance Matrix API](https://developers.google.com/maps/documentation/distance-matrix/). -Get an api key [here](https://github.com/googlemaps/google-maps-services-python#api-keys). +You need to register for an API key by following the instructions [here](https://github.com/googlemaps/google-maps-services-python#api-keys). You only need to turn on the Distance Matrix API. + +A free API Key allows 2500 requests per day. The sensor will update the travel time every 5 minutes. ```yaml # Example entry for configuration.yaml sensor: platform: google_travel_time + name: Google Travel Time api_key: XXXX_XXXXX_XXXXX origin: Trondheim, Norway destination: Paris, France - travel_mode: bicycling # can be ["driving", "walking", "bicycling", "transit"] + options: + ... ``` + +Configuration variables: + +- **api_key** (*Required*): Your application's API key (get one by following the instructions above). This key identifies your application for purposes of quota management. +- **origin** (*Required*): The starting point for calculating travel distance and time. You can supply one or more locations separated by the pipe character, in the form of an address, latitude/longitude coordinates, or a Google place ID. +- **destination** (*Required*): One or more locations to use as the finishing point for calculating travel distance and time. The options for the destinations parameter are the same as for the origins parameter, described above. +- **name** (*Optional*): A name to display on the sensor. The default is "Google Travel Time - " where transit mode is the mode set in options for the sensor (if no mode is set, the default is driving). +- **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. diff --git a/source/images/supported_brands/google_maps.png b/source/images/supported_brands/google_maps.png new file mode 100644 index 0000000000000000000000000000000000000000..e44773b80dce1924e57c6b3cb1fdd2033ce6ec40 GIT binary patch literal 38871 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

cqCAWosO|yA|~U+dD7VdY^6FnzR{R#9`!iz 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 aq1>I2mZM&`OgwSm Date: Thu, 12 May 2016 22:59:26 +0200 Subject: [PATCH 06/35] Create generic_discovery.markdown Introduce generic platform discovery with an example --- source/developers/generic_discovery.markdown | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 source/developers/generic_discovery.markdown diff --git a/source/developers/generic_discovery.markdown b/source/developers/generic_discovery.markdown new file mode 100644 index 00000000000..d8f92304c99 --- /dev/null +++ b/source/developers/generic_discovery.markdown @@ -0,0 +1,83 @@ +--- +layout: page +title: "Generic Platform Discovery" +description: "Using generic platform discovery." +date: 2016-05-12 22:00 -02:00 +sidebar: true +comments: false +sharing: true +footer: true +--- + +New controller or hub components often need to add platforms in sub-components (i.e. Lights & Switches) without additional configuration. +This can be achieved using the `homeassistant.components.discovery.load_platform` method: + +```python +def load_platform(hass, component, platform, info=None, hass_config=None) +``` + +From more info on how this works, refer to the [load_platform](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py#L78) method. + +### {% linkable_title Example %} + +Say you need to implement your new MyFlashyHub that controls both Switches & Lights, you can follow these steps: + +Configuration required for your new hub component: + +```yaml +myflashyhub: + example: setting +``` + +The source for your component can be located in your configuration directory for now: + +```bash +~/.homeassistant/custom_components/myflashyhub.py +~/.homeassistant/custom_components/light/myflashyhub.py +~/.homeassistant/custom_components/switch/myflashyhub.py +``` + +In the hub component `myflashyhub.py` you can call your light and switch components. To pass any non-serializable information to the platforms in the sub-component, you can use a global variable. + +```python +from homeassistant.components.discovery import load_platform +DOMAIN = 'myflashyhub' + +MFH_GLOBAL = None + +def setup(hass, config): + """Your controller/hub specific code.""" + + global MFH_GLOBAL + if MFH_GLOBAL is None: + MFH_GLOBAL = SomeObjectToInitialiseGlobal + #--- snip --- + load_platform(hass, 'light', DOMAIN) + load_platform(hass, 'switch', DOMAIN, {'optional': 'arguments'}) +``` + +Add your custom device specific code to the `setup_platform` method in `light/myflashyhub.py` and `switch/myflashyhub`. + +```python +import homeassistant.components.myflashyhub as myflashyhub + +# 'switch' will receive discovery_info={'optional': 'arguments'} +# as passed in above. 'light' will receive discovery_info=None +def setup_platform(hass, config, add_devices, discovery_info=None): + """Your switch/light specific code.""" + # You can now use myflashyhub.MFH_GLOBAL +``` + + +The `load_platform` method allows the platforms to be loaded with the need for any additional platform entries in your `configuration.yaml` file, which normally would have been: + +```yaml +#light: +# platform: myflashyhub +#switch: +# platform: myflashyhub +``` + +

+In the past, this was achieved by adding your component to the `DISCOVERY_PLATFORMS` in the target sub-component. Generic discovery through `load_platform()` allows you to load any sub-component, including custom components, without changing the sub-component. +

From 456cfe8e3c0ffd231fd6cebd036467025f8b6159 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 14 May 2016 00:02:39 +0200 Subject: [PATCH 07/35] Add initial Supervisor docs --- .../_components/sensor.supervisord.markdown | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 source/_components/sensor.supervisord.markdown diff --git a/source/_components/sensor.supervisord.markdown b/source/_components/sensor.supervisord.markdown new file mode 100644 index 00000000000..28f7dc41e5a --- /dev/null +++ b/source/_components/sensor.supervisord.markdown @@ -0,0 +1,26 @@ +--- +layout: page +title: "Supervisord" +description: "Instructions how to integrate Supervisord within Home Assistant." +date: 2016-05-13 22:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Sensor +ha_release: 0.20 +--- + +The `supervisord` platform allows you to track the states of [Supervisor](http://supervisord.org/). + +```yaml +# Example configuration.yaml entry +sensor: + platform: supervisord + url: http://192.168.1.1:9001/RPC2 +``` + +Configuration variables: + +- **url** (*Optional*): The URL to track. Default to `http://localhost:9001/RPC2`. + From 41eb1e6b866b32a239115060ec55ea40a52f8565 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 14 May 2016 00:17:01 +0200 Subject: [PATCH 08/35] Add section about logging --- source/_components/mqtt.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index df2adc25741..fe6c392d357 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -171,6 +171,18 @@ The MQTT component will register the service `publish` which allows publishing m } ``` +### {% linkable_title Logging %} + +The [logger](/components/logger/) component allow the logging of received MQTT messages. + +```yaml +# Example configuration.yaml entry +logger: + default: warning + logs: + homeassistant.components.device_tracker.mqtt: debug +``` + ## {% linkable_title Testing your setup %} The `mosquitto` broker package is shipping commandline tools to send and recieve MQTT messages. As an alternative have a look at [hbmqtt_pub](http://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_pub.html) and [hbmqtt_sub](http://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_sub.html) which are provied by HBMQTT. For sending test messages to a broker running on localhost check the example below: From 73854ca35c7ce2c0851bab1f99805defaa2ba793 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Sat, 14 May 2016 03:42:36 +0200 Subject: [PATCH 09/35] Component generic discovery link (#473) * Update developers_navigation.html Add link * Rename generic_discovery.markdown to component_generic_discovery.markdown Follow `component_*` naming --- source/_includes/asides/developers_navigation.html | 1 + ...c_discovery.markdown => component_generic_discovery.markdown} | 0 2 files changed, 1 insertion(+) rename source/developers/{generic_discovery.markdown => component_generic_discovery.markdown} (100%) diff --git a/source/_includes/asides/developers_navigation.html b/source/_includes/asides/developers_navigation.html index 67f87aac324..f797725eb8e 100644 --- a/source/_includes/asides/developers_navigation.html +++ b/source/_includes/asides/developers_navigation.html @@ -26,6 +26,7 @@
  • {% active_link /developers/component_deps_and_reqs/ Requirements & Dependencies %}
  • {% active_link /developers/component_initialization/ Initialization %}
  • {% active_link /developers/component_events/ Handling events %}
  • +
  • {% active_link /developers/component_generic_discovery/ Loading Platforms %}
  • {% active_link /developers/component_discovery/ Component Discovery %}
  • diff --git a/source/developers/generic_discovery.markdown b/source/developers/component_generic_discovery.markdown similarity index 100% rename from source/developers/generic_discovery.markdown rename to source/developers/component_generic_discovery.markdown From e35d6fd88075c8a0571b1ba01c62512791d3bfed Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sat, 14 May 2016 13:56:25 -0700 Subject: [PATCH 10/35] Add notify.twilio_sms platform docs --- source/_components/notify.twilio_sms.markdown | 54 ++++++++++++++++++ source/images/supported_brands/twilio.png | Bin 0 -> 4894 bytes 2 files changed, 54 insertions(+) create mode 100644 source/_components/notify.twilio_sms.markdown create mode 100644 source/images/supported_brands/twilio.png diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown new file mode 100644 index 00000000000..79601056f4d --- /dev/null +++ b/source/_components/notify.twilio_sms.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Twilio SMS" +description: "Instructions how to add user notifications to Home Assistant." +date: 2016-01-29 +sidebar: true +comments: false +sharing: true +footer: true +logo: twilio.png +ha_category: Notifications +--- + +The Twilio notify platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). + +### Configuration + +```yaml +# Example configuration.yaml entry +notify: + platform: twilio_sms + account_sid: ACCOUNT_SID_FROM_TWILIO + auth_token: AUTH_TOKEN_FROM_TWILIO + from_number: E164_PHONE_NUMBER + # Optional + name: NOTIFIER_NAME +``` + +Configuration variables: + +- **account_sid** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It starts with the letters `AC`. +- **auth_token** (*Required*): Your Twilio Account SID which can be found in your [console](https://www.twilio.com/console). It should be directly under where you found the `account_sid`. +- **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. +- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. + +### Usage + +Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. + +```yaml +# Example automation notification entry +automation: + - alias: The sun has set + trigger: + platform: sun + event: sunset + action: + service: notify.twilio_sms + data: + message: 'The sun has set' + target: + - +14151234567 + - +15105555555 +``` diff --git a/source/images/supported_brands/twilio.png b/source/images/supported_brands/twilio.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9ea721e1edff99d9e5d2e2e21e73ee7edb0499 GIT binary patch literal 4894 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 Q4gdfE07*qoM6N<$f{_H`KmY&$ literal 0 HcmV?d00001 From 4808148a377d5e2c47daf3d85b99e6a523ca5d3b Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sat, 14 May 2016 14:15:02 -0700 Subject: [PATCH 11/35] Fix Twilio SMS front matter Too quick with the trigger finger on the merge button :( --- source/_components/notify.twilio_sms.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 79601056f4d..4f47534fa0d 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -2,13 +2,14 @@ layout: page title: "Twilio SMS" description: "Instructions how to add user notifications to Home Assistant." -date: 2016-01-29 +date: 2016-05-14 14:14 sidebar: true comments: false sharing: true footer: true logo: twilio.png ha_category: Notifications +ha_release: 0.20 --- The Twilio notify platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). From c10b2d22040b66cb7ced274869297ab07ede91e0 Mon Sep 17 00:00:00 2001 From: Richard Cox Date: Sun, 15 May 2016 13:50:42 -0700 Subject: [PATCH 12/35] Nest Protect sensor support (#479) --- source/_components/sensor.nest.markdown | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.nest.markdown b/source/_components/sensor.nest.markdown index 5cbf2782abe..2cd7e1c9dde 100644 --- a/source/_components/sensor.nest.markdown +++ b/source/_components/sensor.nest.markdown @@ -12,7 +12,7 @@ ha_category: Sensor --- -The `nest` sensor platform let you monitor sensors connected to your [Nest](https://nest.com) thermostat. +The `nest` sensor platform let you monitor sensors connected to your [Nest](https://nest.com) thermostat and/or your Nest Protect Smoke Alarm. To set it up, add the following information to your `configuration.yaml` file: @@ -35,6 +35,8 @@ sensor: - 'weather_humidity' - 'wind_speed' - 'wind_direction' + - 'co_status' + - 'smoke_status' ``` Configuration variables: @@ -55,5 +57,6 @@ Configuration variables: - 'weather_humidity' - 'wind_speed' - 'wind_direction' - + - 'co_status' # Nest Protect only + - 'smoke_status' # Nest Protect only

    You must have the [Nest component](/components/nest/) configured to use this sensor.

    From 62a6a078b75debe637346040fd428734e398cf7c Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sun, 15 May 2016 13:51:00 -0700 Subject: [PATCH 13/35] Add docs for AWS Lambda, SNS and SQS (#478) * Add docs for AWS Lambda, SNS and SQS * Improve SNS documentation --- source/_components/notify.aws_lambda.markdown | 77 ++++++++++++++++++ source/_components/notify.aws_sns.markdown | 42 ++++++++++ source/_components/notify.aws_sqs.markdown | 53 ++++++++++++ source/images/supported_brands/aws_lambda.png | Bin 0 -> 1310 bytes source/images/supported_brands/aws_sns.png | Bin 0 -> 1168 bytes source/images/supported_brands/aws_sqs.png | Bin 0 -> 1408 bytes 6 files changed, 172 insertions(+) create mode 100644 source/_components/notify.aws_lambda.markdown create mode 100644 source/_components/notify.aws_sns.markdown create mode 100644 source/_components/notify.aws_sqs.markdown create mode 100755 source/images/supported_brands/aws_lambda.png create mode 100755 source/images/supported_brands/aws_sns.png create mode 100755 source/images/supported_brands/aws_sqs.png diff --git a/source/_components/notify.aws_lambda.markdown b/source/_components/notify.aws_lambda.markdown new file mode 100644 index 00000000000..6f7a873448d --- /dev/null +++ b/source/_components/notify.aws_lambda.markdown @@ -0,0 +1,77 @@ +--- +layout: page +title: "AWS Lambda" +description: "Instructions how to invoke AWS Lambda functions from Home Assistant." +date: 2016-05-14 16:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: aws_lambda.png +ha_category: Notifications +ha_release: 0.20 +--- + +The AWS Lambda notify platform enables invoking [AWS Lambda](https://aws.amazon.com/lambda/) functions. + +### Configuration + +```yaml +# Example configuration.yaml entry +notify: + platform: aws_lambda + name: NOTIFIER_NAME + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + profile_name: AWS_PROFILE + region_name: 'us-east-1' + # Optional + context: + ... +``` + +Configuration variables: + +- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. +- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. +- **profile_name** (*Optional*): A credentials profile name. For more information, please see the [boto3 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). +- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. +- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **context** (*Optional*): An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route. + +### Usage + +AWS Lambda is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/lambda.html#Lambda.Client.invoke). + +The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda: + +```json +{ + "title": "Test message!", + "target": "arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords", + "data": { + "test": "okay" + }, + "message": "Hello world!" +} +``` + +The context will look like this: + +```json +{ + "hass": { + "components": ["recorder", "logger", "http", "logbook", "api", "frontend"], + "latitude": 44.1234, + "location_name": "Home", + "longitude": 5.5678, + "temperature_unit": "°C", + "time_zone": "Europe/Zurich", + "version": "0.20.0.dev0" + }, + "custom": { + "two": "three", + "test": "one" + } +} +``` diff --git a/source/_components/notify.aws_sns.markdown b/source/_components/notify.aws_sns.markdown new file mode 100644 index 00000000000..03e631f1bb0 --- /dev/null +++ b/source/_components/notify.aws_sns.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "AWS SNS" +description: "Instructions how to publish messages to AWS SNS from Home Assistant." +date: 2016-05-14 16:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: aws_sns.png +ha_category: Notifications +ha_release: 0.20 +--- + +The AWS SNS notify platform enables publishing to an [AWS SNS](https://aws.amazon.com/sns/) topic or application. + +### Configuration + +```yaml +# Example configuration.yaml entry +notify: + platform: aws_sns + name: NOTIFIER_NAME + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + profile_name: AWS_PROFILE + region_name: 'us-east-1' +``` + +Configuration variables: + +- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. +- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. +- **profile_name** (*Optional*): A credentials profile name. For more information, please see the [boto3 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). +- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. +- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. + +### Usage + +AWS SNS is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Client.publish). + +If one exists, the SNS Subject will be set to the title. All attributes from the payload except message will be sent as stringified message attributes. diff --git a/source/_components/notify.aws_sqs.markdown b/source/_components/notify.aws_sqs.markdown new file mode 100644 index 00000000000..b89bdbc8a06 --- /dev/null +++ b/source/_components/notify.aws_sqs.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "AWS SQS" +description: "Instructions how to publish messages to AWS SQS from Home Assistant." +date: 2016-05-14 16:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: aws_sqs.png +ha_category: Notifications +ha_release: 0.20 +--- + +The AWS SQS notify platform enables publishing to an [AWS SQS](https://aws.amazon.com/sqs/) message queue. + +### Configuration + +```yaml +# Example configuration.yaml entry +notify: + platform: aws_sqs + name: NOTIFIER_NAME + aws_access_key_id: AWS_ACCESS_KEY_ID + aws_secret_access_key: AWS_SECRET_ACCESS_KEY + profile_name: AWS_PROFILE + region_name: 'us-east-1' +``` + +Configuration variables: + +- **aws_access_key_id** (*Required if aws_secret_access_key is provided*): Your AWS Access Key ID. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. +- **aws_secret_access_key** (*Required if aws_access_key_id is provided*): Your AWS Secret Access Key. For more information, please read the [AWS General Reference regarding Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html). If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. +- **profile_name** (*Optional*): A credentials profile name. For more information, please see the [boto3 documentation section about credentials](http://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file). +- **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. +- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. + +### Usage + +AWS SQS is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS docs](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html). + +The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload except message will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue: + +```json +{ + "title": "Test message!", + "target": "http://sqs.us-east-1.amazonaws.com/123456789012/queue2", + "data": { + "test": "okay" + }, + "message": "Hello world!" +} +``` diff --git a/source/images/supported_brands/aws_lambda.png b/source/images/supported_brands/aws_lambda.png new file mode 100755 index 0000000000000000000000000000000000000000..40608d21c75afe29ceb6dfa2e6479d8068b91ad4 GIT binary patch literal 1310 zcmV+(1>yRMP)SscfIGaV?Uf<;_m z4Tl0Tnh;G7>uUC5@no_G-FV)mgrf%~9zCE3&xROJ#!znD=!B6owIvu02(|!SBN$M@XfhR$WHt~@3^1kwlFSBD z0T@#NNe2MLgNJ*?fam~opn&89fbS~@MW^Vy-eLqBt7R0E!Mds`AS;8ZDWH9WQ4=!{ zZ-A8jMw!)(WB`sg0X|F!uYblCLdO_08BhS9XJ1ZQG76+bVn&K!8z)E;(`$79RJrff z5ta1H5Fp7YkV^ldrS)X=_kZGE6Tuh)q{qjM840@%S*n-9P?rzlAu81bkjyd}{6L_d zrU1+Uq?Ga@_yMxVFt(Y=moZObH^VESf+(hxsb#!c|6!K{RyTKfA3++RVYvpi3=e>O zvf#i`RQmV-1neZ!HT@fk6~X*EyAE>*=Xh%aeADHIp7y5fx$VJdTHHv&FK<4VWo<46 z`Z`_E+wO$E4wpT_9CbGYal}x>^lN=;>>~~NOWxrFjr5vjsG+; z8@~44*B%wl1@%Y~HtT=>T-nJsk`a@$v?)D!xGPGk2chuoe5a$^0|??eo_ca4Q==lqu-56vLNH>>%y;ucDxf-7e{R1dNd#)L8k6%p z)=K1Xrvw|08=Q6P-A){m0f1=Xv9nkFl_nH zdYi8cFbws6<@9tPZ4_WwI@j%nwq}O_!xAkXa64rIM&vOS>W|qtY$ehHOs-!3w_VYz zW?O-ofB!M|_ew&TQl27D=C($KkNHwGN!~AO zv2Tk6FE0XN8x)yup|kyAzsvS5`NFNG$q~ftm1g9q`P8GP{%ZWl%aUNudYi}n4_}9K z`{)%d9joyc(z0M!8Vb#Z%iYu2)dkB73-$uTQgZ4(b72u_W#Jtpwl~4C_zJHQe1j-S%h_{oO-boJKaiaIaikas*!_qQ zK97j(sK9GmIA6)t8YpHWnRV4f>>QPhm=0WRiuMhjNMW5gK%z@iv5>4 z22${QY=u#bMTbJRFfAq!TNIH-fEWQoeyHeHN=0j#R3^eI=IRy5UUseb+bh`gLUY)( zGe~%1dX1o1Zqp0hrj+NTH9&hX@Bu=3AT2RMs^(*I0hzs-Up0YL&H1W;xBCND$U%b9YO#P7fEW(fMkThCGziGHn~)kv6ioqQI+%Pw^|sM*-KgHS#{MM00An^N U<2fcUP5=M^07*qoM6N<$f+|i_YybcN literal 0 HcmV?d00001 diff --git a/source/images/supported_brands/aws_sns.png b/source/images/supported_brands/aws_sns.png new file mode 100755 index 0000000000000000000000000000000000000000..1a04bd8e0df5544afba4998471436cc87a7527e5 GIT binary patch literal 1168 zcmV;B1aJF^P)1RCwC#+`mr~aTEaXch@UFN?WcX zN=OLB$;5#s{sFcQP9|Pr!d&8_aq3{AlaQEb;vi1C0fUQ)N!?9aCkF>$bU`9WKm{vp zfwuhcz2keN9@o-dDR-9llJl;;qrLm^{l51~dIGp4p4_;vy}SE7>X!47oIZhj!y|<8 zI1~&-uU@%KPo;4gzy10_`b@$YAh_tG1YtnH7~v?8Ts9l3kE0jTr^OBnj%nr_Y)=9!{t#)f={eB)cHB zUeNr~GR!Z22M1wn0m*fsq)xc(x;h87LRD%C&=HvDHxpr(R2fHsq_XJ}79aoPVy;sH zrAqVh%hzwPxU%}fPHu2fj;SjLDFz5Ganpfev1k{1LIiUbMvzhF6S4q_14lWKCbI)q zC5B-bhG7_nVHk#C7=~dO4u)YEhG7_nVHk#C7=~dOhT&ishG7_nVHk#C7=~dOhB_^vJ@9w5fhX>NM}`C9#BnugJnjz#z~A1cZ~xxN!s^<3dTHec zy#d{z6)}I?l17{2@qpKJFiTzVtxbYRR70o<#*8D&5?tyHl~1W5<0c9`Zf3VsiUhiR zu!$f>w0jj8?CEw3Ow7)W7M98PQSuq(oN?OT+uMib-&teVlf76e z0%Y@>kloyZU+bC7Mm|r&I$UkUPys0H?0^qn!)6hPo!V_V74RtEq|7*!X9mx!Ru`4P z6Q00osPtvXs)2lNKI?2ML}qkRlcJxXw+=I7}* zzVat`q(`7BDXL+n)8`xQRzsN%e?XtIYq?E5Ul}NR($8;0u28J^w5DCr;2}=Z3MaQ+ zG+)%q^6DT^V*;#V5b)mqe$8bW-($)(ov%pRLjq{ZxLCR<8a?9iM1>KTsP@`4f-FW~ zr5JDYTAJS0iu|KtFLVogqWAcl9IJBdKRuLH^ai^i100RK*CBA!Uyrp3P0000#(~ literal 0 HcmV?d00001 diff --git a/source/images/supported_brands/aws_sqs.png b/source/images/supported_brands/aws_sqs.png new file mode 100755 index 0000000000000000000000000000000000000000..ffb40ee6bf94df8af5dcda722997de71820da69b GIT binary patch literal 1408 zcmV-`1%LX9P)c&thYp05-W0k4hQ2&97Oj$c+B~_zHky^=V6j7SCIq1+r z5V4JafNh+<@5>!M+h_aE_kP*jS9*H)&ItH^{QaKKcNhRg;+rp)Q``4eQmXtunhGFf z`kIW}pMCTe?%E*ZPG)t}IF~SX5Nn?aV}(>8O$Cq+Fj9du6+n8xNCDDR0C5Q;6i8D6 z#3PIlAWa33K4G{5X)1vDgy90DsQ|(VhAEJy0tjOmCP11BAe>-)0ck3LaE9p%NK*ks z5R4}vO$89aFs^_!6+k4xbOq8>0Feyi2&55^IGNXFfz;}+p>li*rAi$x&5pynS0-WM z;snH|beTYF_|tEQMmecA2*fEA%XPYK#q)9rp8s8<+jG-naBX3dKt<@bz(9+;!k(65 z`At<|bzqhBiv3q7bUb`=NUH~{2&)N)h|oo}2%`9je6bEsi%0PE&m+3FfOxi?E}}(P z2eupUmeWPI2H$e>bi$ z`0UqC8<4}f-Z)#o%vBw~e)*lLrZrX?8S5Y4Onmay=V^p_Vyl>3W_2^GB#b@rrOT0~ z$A0?tup>Ypam$=PweQ@%w*q#k7C6Jty(L#LWm4)pq^xl+pPbUt$8CGG!U&9b54es8 zzP0h5e}1DK#<0+;|M zfI06GyjLP`7|r=d+dAtCCNefkFCulj>@Z-7LuPgJf$xgJ%a5&B*D&l*62tL2aIeI< zwi1HjNW|J7`|$b&PKmK|_2gY17L7-BQCRlUH*@48UR`O?+f!j$_XNX2G&?;I= zU!_ao#QBBG4kM%t!z5h8tePkr)W_ z|408?AC(0p5vB>m3S~ZCECI$5q$iAMAb~JlL0rR#0ulh@3dA!EZy=5^o Date: Tue, 17 May 2016 00:29:40 -0500 Subject: [PATCH 14/35] Added roku platform documentation (#486) --- source/_components/media_player.roku.markdown | 29 ++++++++++++++++++ source/images/supported_brands/roku.png | Bin 0 -> 3600 bytes 2 files changed, 29 insertions(+) create mode 100644 source/_components/media_player.roku.markdown create mode 100644 source/images/supported_brands/roku.png diff --git a/source/_components/media_player.roku.markdown b/source/_components/media_player.roku.markdown new file mode 100644 index 00000000000..1aedb18b9e7 --- /dev/null +++ b/source/_components/media_player.roku.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "Roku" +description: "Instructions how to integrate Roku into Home Assistant." +date: 2016-05-16 20:0+0000 +sidebar: true +comments: false +sharing: true +footer: true +logo: roku.png +ha_category: Media Player +ha_release: 0.20 +--- + + +[Roku](http://www.roku.com/) media players will be automatically discovered if you enable [the discovery component]({{site_root}}/components/discovery/). + +Roku platform can also be forced to load by adding the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +media_player: + platform: roku + host: 192.168.1.10 +``` + +Configuration variables: + +- **host** *Optional*: Use only if you don't want to scan for devices. diff --git a/source/images/supported_brands/roku.png b/source/images/supported_brands/roku.png new file mode 100644 index 0000000000000000000000000000000000000000..b91be81dfec92de3a846b73489503667c68551c7 GIT binary patch literal 3600 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 Date: Tue, 17 May 2016 00:09:03 -0700 Subject: [PATCH 15/35] Add color_name documentation --- source/_components/light.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/light.markdown b/source/_components/light.markdown index c544d7d9af0..c55e3473a7f 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -37,7 +37,8 @@ Turns one light on or multiple lights on using [groups]({{site_root}}/components | `profile` | yes | String with the name of one of the built-in profiles (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness or xy color then the profile values will be overwritten. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma seperated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers representing the xy color you want the light to be. Three comma seperated integers that represent the color in RGB -| `color_temp` | yes | An INT in mireds represending the color temperature you want the light to be. +| `color_temp` | yes | An INT in mireds representing the color temperature you want the light to be. +| `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod` or [`chucknorris`](http://stackoverflow.com/questions/8318911/why-does-html-think-chucknorris-is-a-color). If your browser can display it, so can Home Assistant. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. | `flash` | yes | Tell light to flash, can be either value `short` or `long`. *not supported by Wink From 2d9a719b24a666cbe19476dedf063eaf4058a93e Mon Sep 17 00:00:00 2001 From: Ardi Mehist Date: Wed, 18 May 2016 13:56:20 +0100 Subject: [PATCH 16/35] Update to reflect changes to component --- source/_components/logentries.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown index d1d43f4df07..7517cb4e32b 100644 --- a/source/_components/logentries.markdown +++ b/source/_components/logentries.markdown @@ -18,7 +18,6 @@ To use the `logentries` component in your installation, add the following to you # Example configuration.yaml entry logentries: token: your-log-token-here - SSL: True ``` Configuration variables: From 72a672519cfb952767cff7b495e2cd902b1ce62b Mon Sep 17 00:00:00 2001 From: GreenTurtwig Date: Wed, 18 May 2016 15:50:45 +0100 Subject: [PATCH 17/35] Added Last.fm page --- source/_components/sensor.lastfm.markdown | 38 ++++++++++++++++++++++ source/images/supported_brands/lastfm.png | Bin 0 -> 15667 bytes 2 files changed, 38 insertions(+) create mode 100644 source/_components/sensor.lastfm.markdown create mode 100644 source/images/supported_brands/lastfm.png diff --git a/source/_components/sensor.lastfm.markdown b/source/_components/sensor.lastfm.markdown new file mode 100644 index 00000000000..3aaa9d563b2 --- /dev/null +++ b/source/_components/sensor.lastfm.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Last.fm" +description: "Instructions how to integrate Last.fm sensors into Home Assistant." +date: 2016-05-18 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: lastfm.png +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: 0.20 +--- + + +The Last.fm platform will allow you to see whenever a user starts scrobbling, their play count, last song played and top song played. + +To get an API key you need to create an ["API account"](http://www.last.fm/api/account/create). + +To use Last.fm with your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: lastfm + api_key: YOUR_API_KEY + users: + - user1 + - user2 +``` + +Configuration variables: + +- **api_key** (*Required*): Your API key. +- **users** array (*Required*): Array of users. + - **username** (*Required*): Username of the user. + diff --git a/source/images/supported_brands/lastfm.png b/source/images/supported_brands/lastfm.png new file mode 100644 index 0000000000000000000000000000000000000000..4fde99f3713a4014b033a813162fb3c48a5210e9 GIT binary patch literal 15667 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 i^CHy%m-^{3$Z685F-L}<33v+{N?ux7s#d}@ Date: Fri, 20 May 2016 20:02:46 +0200 Subject: [PATCH 18/35] Update automation-action.markdown --- .../automation-action.markdown | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/source/getting-started/automation-action.markdown b/source/getting-started/automation-action.markdown index b08c9678a93..b099686bde8 100644 --- a/source/getting-started/automation-action.markdown +++ b/source/getting-started/automation-action.markdown @@ -47,3 +47,24 @@ automation 2: data: message: Oh wow you really missed something great. ``` + + +Conditions can also be part of an action: + +```yaml +automation: +- alias: 'Enciende Despacho' + trigger: + platform: state + entity_id: sensor.mini_despacho + to: 'ON' + action: + - condition: or + conditions: + - condition: template + value_template: '{{ states.sun.sun.attributes.elevation < 4 }}' + - condition: template + value_template: '{{ states.sensor.sensorluz_7_0.state < 10 }}' + - service: scene.turn_on + entity_id: scene.DespiertaDespacho +``` From 74de0e1fbc0edf7ba030ad6752d1418b49b48f60 Mon Sep 17 00:00:00 2001 From: wokar Date: Sat, 21 May 2016 09:55:02 +0200 Subject: [PATCH 19/35] Added lgtv platform to control a LG Smart TV running NetCast 3.0 or 4.0 (#480) * Added lgtv platform to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). * Update media_player.lgtv.markdown * Rename media_player.lgtv.markdown to media_player.lg_netcast.markdown --- .../media_player.lg_netcast.markdown | 44 ++++++++++++++++++ source/images/supported_brands/lg.png | Bin 0 -> 27517 bytes 2 files changed, 44 insertions(+) create mode 100644 source/_components/media_player.lg_netcast.markdown create mode 100644 source/images/supported_brands/lg.png diff --git a/source/_components/media_player.lg_netcast.markdown b/source/_components/media_player.lg_netcast.markdown new file mode 100644 index 00000000000..2ffafd165b2 --- /dev/null +++ b/source/_components/media_player.lg_netcast.markdown @@ -0,0 +1,44 @@ +--- +layout: page +title: "LG Netcast TV" +description: "Instructions how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant." +date: 2016-05-12 23:22 +sidebar: true +comments: false +sharing: true +footer: true +logo: lg.png +ha_category: Media Player +ha_iot_class: "Local Poll" +ha_release: 0.20 +---------------- + +The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 +(LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). +For the new LG WebOS TV's use the [webostv](/components/mediaplayer.webostv) platform. + +To add a LG TV to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: lg_netcast + host: 192.168.0.20 + access_token: 889955 + name: Living Room TV +``` + +Configuration variables: + +- **host** *Required*: The IP of the LG Smart TV, e.g. 192.168.0.20 +- **access_token** *Optional*: The access token needed to connect. +- **name** *Optional*: The name you would like to give to the LG Smart TV. The default is "LG TV Remote". + +To get the access token for your TV configure the `lg_netcast` platform in Home Assistant without the `access_token`. +After starting Home Assistant the TV will display the access token on screen. +Just add the token to your configuration and restart Home Assistant and the media player component for your LG TV will show up. + +

    +The access token will not change until you factory reset your TV. +

    + diff --git a/source/images/supported_brands/lg.png b/source/images/supported_brands/lg.png new file mode 100644 index 0000000000000000000000000000000000000000..d08ff623959376cda9f3bcc6aa234fd5143970f1 GIT binary patch literal 27517 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%0DsZ%)23u48pHMsxJ zkKz1c+Q+{_#AvA1pIv%^0fW2=SJ^unK>DAhEYZ$UGF zX}mq*XJ5Mw4?OZD{^grL!HDckq;cp}O(K$D;me=6!G?!!m{P+7V4izv5&rARMYwoe zz74a=DymV=GXVenlUHED1?L(uibx%iTNzkR*Q4w9@jJfoX(H`Qc>UdFxaQ7#Fd#05 zH-*Haw6+1cX-SweDjzp4Jl_^j6@Lba{o(KYD}MLz6Zrhy_h58>4oVO62KUm#xap!Z z@zEPT7?KVajx4~PJRk6X9{4-%_}zcNy9Ys%A%m5uyBM4B9x~KFMGHNcNdr0 zvv(hgSUwS_{Ni{UM>?f#;(*FqVrCadTyXpL9j5hQ!Vl&aR<|Bm~*Z@`=#IPu!9#Jn3LjqAZk5w7 zV|T)KEK674{Y2CibWWn58rmUAXT=bL=~3@01CPh3qGyh+ye=?1w=2 zA>afs-H*{9vL6Ed5NHR1ej;iIj{c8+2=p8R{Y2DrnDxi#hd?_B^b=7#aP)ulL!jpn Z`2X Date: Sat, 21 May 2016 09:58:47 +0200 Subject: [PATCH 20/35] Change logo to one with a transparent bg --- source/images/supported_brands/lg.png | Bin 27517 -> 34855 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/supported_brands/lg.png b/source/images/supported_brands/lg.png index d08ff623959376cda9f3bcc6aa234fd5143970f1..214f57a230ea04b344d099ad46b5e33e9683ecea 100644 GIT binary patch literal 34855 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 literal 27517 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%0DsZ%)23u48pHMsxJ zkKz1c+Q+{_#AvA1pIv%^0fW2=SJ^unK>DAhEYZ$UGF zX}mq*XJ5Mw4?OZD{^grL!HDckq;cp}O(K$D;me=6!G?!!m{P+7V4izv5&rARMYwoe zz74a=DymV=GXVenlUHED1?L(uibx%iTNzkR*Q4w9@jJfoX(H`Qc>UdFxaQ7#Fd#05 zH-*Haw6+1cX-SweDjzp4Jl_^j6@Lba{o(KYD}MLz6Zrhy_h58>4oVO62KUm#xap!Z z@zEPT7?KVajx4~PJRk6X9{4-%_}zcNy9Ys%A%m5uyBM4B9x~KFMGHNcNdr0 zvv(hgSUwS_{Ni{UM>?f#;(*FqVrCadTyXpL9j5hQ!Vl&aR<|Bm~*Z@`=#IPu!9#Jn3LjqAZk5w7 zV|T)KEK674{Y2CibWWn58rmUAXT=bL=~3@01CPh3qGyh+ye=?1w=2 zA>afs-H*{9vL6Ed5NHR1ej;iIj{c8+2=p8R{Y2DrnDxi#hd?_B^b=7#aP)ulL!jpn Z`2X Date: Sat, 21 May 2016 09:59:16 +0200 Subject: [PATCH 21/35] Update layout --- source/_components/media_player.lg_netcast.markdown | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/source/_components/media_player.lg_netcast.markdown b/source/_components/media_player.lg_netcast.markdown index 2ffafd165b2..bce6a71e0f8 100644 --- a/source/_components/media_player.lg_netcast.markdown +++ b/source/_components/media_player.lg_netcast.markdown @@ -11,11 +11,9 @@ logo: lg.png ha_category: Media Player ha_iot_class: "Local Poll" ha_release: 0.20 ----------------- +--- -The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 -(LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). -For the new LG WebOS TV's use the [webostv](/components/mediaplayer.webostv) platform. +The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/components/mediaplayer.webostv) platform. To add a LG TV to your installation, add the following to your `configuration.yaml` file: @@ -30,9 +28,9 @@ media_player: Configuration variables: -- **host** *Required*: The IP of the LG Smart TV, e.g. 192.168.0.20 -- **access_token** *Optional*: The access token needed to connect. -- **name** *Optional*: The name you would like to give to the LG Smart TV. The default is "LG TV Remote". +- **host** (*Required*): The IP address of the LG Smart TV, eg. 192.168.0.20 +- **access_token** (*Optional*): The access token needed to connect. +- **name** (*Optional*): The name you would like to give to the LG Smart TV. The default is "LG TV Remote". To get the access token for your TV configure the `lg_netcast` platform in Home Assistant without the `access_token`. After starting Home Assistant the TV will display the access token on screen. From fa26c9427f4f75fd7a14b8e9ce8946ed849f720c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 10:26:53 +0200 Subject: [PATCH 22/35] Minor changes --- source/_components/sensor.lastfm.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_components/sensor.lastfm.markdown b/source/_components/sensor.lastfm.markdown index 3aaa9d563b2..a8c8edbf3f5 100644 --- a/source/_components/sensor.lastfm.markdown +++ b/source/_components/sensor.lastfm.markdown @@ -14,9 +14,9 @@ ha_release: 0.20 --- -The Last.fm platform will allow you to see whenever a user starts scrobbling, their play count, last song played and top song played. +The `lastfm` sensor platform will allow you to see whenever a user starts scrobbling, their play count, last song played, and top song played on [Last.fm](http://www.last.fm). -To get an API key you need to create an ["API account"](http://www.last.fm/api/account/create). +To get an API key you need to create an [API account](http://www.last.fm/api/account/create). To use Last.fm with your installation, add the following to your `configuration.yaml` file: From af44d1865237e97f15e4f85573ce927bcee77ff8 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 10:28:57 +0200 Subject: [PATCH 23/35] Minor changes --- source/_components/media_player.roku.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/_components/media_player.roku.markdown b/source/_components/media_player.roku.markdown index 1aedb18b9e7..e64ac96ecfa 100644 --- a/source/_components/media_player.roku.markdown +++ b/source/_components/media_player.roku.markdown @@ -12,10 +12,9 @@ ha_category: Media Player ha_release: 0.20 --- +The [Roku](http://www.roku.com/) media players will be automatically discovered if you enable the [discovery component](/components/discovery/). -[Roku](http://www.roku.com/) media players will be automatically discovered if you enable [the discovery component]({{site_root}}/components/discovery/). - -Roku platform can also be forced to load by adding the following lines to your `configuration.yaml`: +The `roku` media player platform can also be forced to load by adding the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry From 5d4340c05b7ba68f4dafbc5f32fc9d0b9a51622a Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 10:31:48 +0200 Subject: [PATCH 24/35] Minor changes --- source/_components/media_player.gpmdp.markdown | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/_components/media_player.gpmdp.markdown b/source/_components/media_player.gpmdp.markdown index 202bbd00c8c..59bd64ec5b0 100644 --- a/source/_components/media_player.gpmdp.markdown +++ b/source/_components/media_player.gpmdp.markdown @@ -14,9 +14,7 @@ ha_release: 0.20 --- - -The `GPMDP` platform allows you to control a [GPMDP](http://www.googleplaymusicdesktopplayer.com/) instance running on a computer from Home Assistant. - +The `gpmdp` media player platform allows you to control a [GPMDP](http://www.googleplaymusicdesktopplayer.com/) instance running on a computer from Home Assistant. You will have first have to check "Enable playback API" in GPMDP's settings and then add an inbound rule to the firewall to allow access to port 5672 on the computer running GPMDP. @@ -32,6 +30,6 @@ media_player: Configuration variables: -- **address** *Required*: IP address of the computer running GPMDP -- **name** *Optional*: Name of the player +- **address** (*Required*): IP address of the computer running GPMDP +- **name** (*Optional*): Name of the player From 2b3c56017dd82151f85056ba8b5d9684ef77407d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 11:09:59 +0200 Subject: [PATCH 25/35] Make title linkable --- source/_components/notify.twilio_sms.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 4f47534fa0d..91413c2df3f 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -12,19 +12,18 @@ ha_category: Notifications ha_release: 0.20 --- -The Twilio notify platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). +The `twilio` notify platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). -### Configuration +To use this nofification in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry notify: platform: twilio_sms + name: NOTIFIER_NAME account_sid: ACCOUNT_SID_FROM_TWILIO auth_token: AUTH_TOKEN_FROM_TWILIO from_number: E164_PHONE_NUMBER - # Optional - name: NOTIFIER_NAME ``` Configuration variables: @@ -34,7 +33,7 @@ Configuration variables: - **from_number** (*Required*): An [E.164](https://en.wikipedia.org/wiki/E.164) formatted phone number, like +14151234567. See [Twilio's guide to formatting phone numbers](https://www.twilio.com/help/faq/phone-numbers/how-do-i-format-phone-numbers-to-work-internationally) for more information. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -### Usage +### {% linkable_title Usage %} Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. From 03ca0b369edd97982a9a7ef34c2e20199f11f928 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 11:39:02 +0200 Subject: [PATCH 26/35] Fix ha_release and other minor issues --- source/_components/media_player.gpmdp.markdown | 2 +- source/_components/media_player.lg_netcast.markdown | 2 +- source/_components/media_player.roku.markdown | 2 +- source/_components/notify.aws_lambda.markdown | 9 +++++---- source/_components/notify.aws_sns.markdown | 8 ++++---- source/_components/notify.aws_sqs.markdown | 8 ++++---- source/_components/notify.ecobee.markdown | 9 ++++----- source/_components/notify.twilio_sms.markdown | 6 +++--- source/_components/sensor.lastfm.markdown | 2 +- source/_components/sensor.supervisord.markdown | 4 +++- 10 files changed, 27 insertions(+), 25 deletions(-) diff --git a/source/_components/media_player.gpmdp.markdown b/source/_components/media_player.gpmdp.markdown index 59bd64ec5b0..18d47bd263a 100644 --- a/source/_components/media_player.gpmdp.markdown +++ b/source/_components/media_player.gpmdp.markdown @@ -10,7 +10,7 @@ footer: true logo: gpmdp.png ha_category: Media Player ha_iot_class: "Local Polling" -ha_release: 0.20 +ha_release: "0.20" --- diff --git a/source/_components/media_player.lg_netcast.markdown b/source/_components/media_player.lg_netcast.markdown index bce6a71e0f8..624854a210c 100644 --- a/source/_components/media_player.lg_netcast.markdown +++ b/source/_components/media_player.lg_netcast.markdown @@ -10,7 +10,7 @@ footer: true logo: lg.png ha_category: Media Player ha_iot_class: "Local Poll" -ha_release: 0.20 +ha_release: "0.20" --- The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/components/mediaplayer.webostv) platform. diff --git a/source/_components/media_player.roku.markdown b/source/_components/media_player.roku.markdown index e64ac96ecfa..4de5d21de9b 100644 --- a/source/_components/media_player.roku.markdown +++ b/source/_components/media_player.roku.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: roku.png ha_category: Media Player -ha_release: 0.20 +ha_release: "0.20" --- The [Roku](http://www.roku.com/) media players will be automatically discovered if you enable the [discovery component](/components/discovery/). diff --git a/source/_components/notify.aws_lambda.markdown b/source/_components/notify.aws_lambda.markdown index 6f7a873448d..1eee6770b08 100644 --- a/source/_components/notify.aws_lambda.markdown +++ b/source/_components/notify.aws_lambda.markdown @@ -9,10 +9,12 @@ sharing: true footer: true logo: aws_lambda.png ha_category: Notifications -ha_release: 0.20 +ha_release: "0.20" --- -The AWS Lambda notify platform enables invoking [AWS Lambda](https://aws.amazon.com/lambda/) functions. +The `aws_lambda` notification platform enables invoking [AWS Lambda](https://aws.amazon.com/lambda/) functions. + +To use this notification platform in your installation, add the following to your `configuration.yaml` file: ### Configuration @@ -25,7 +27,6 @@ notify: aws_secret_access_key: AWS_SECRET_ACCESS_KEY profile_name: AWS_PROFILE region_name: 'us-east-1' - # Optional context: ... ``` @@ -39,7 +40,7 @@ Configuration variables: - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. - **context** (*Optional*): An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route. -### Usage +### {% linkable_title Usage %} AWS Lambda is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/lambda.html#Lambda.Client.invoke). diff --git a/source/_components/notify.aws_sns.markdown b/source/_components/notify.aws_sns.markdown index 03e631f1bb0..f153ee11051 100644 --- a/source/_components/notify.aws_sns.markdown +++ b/source/_components/notify.aws_sns.markdown @@ -9,12 +9,12 @@ sharing: true footer: true logo: aws_sns.png ha_category: Notifications -ha_release: 0.20 +ha_release: "0.20" --- -The AWS SNS notify platform enables publishing to an [AWS SNS](https://aws.amazon.com/sns/) topic or application. +The `aws_sns` notification platform enables publishing to an [AWS SNS](https://aws.amazon.com/sns/) topic or application. -### Configuration +To use this notification platform in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -35,7 +35,7 @@ Configuration variables: - **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -### Usage +### {% linkable_title Usage %} AWS SNS is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [boto3 docs](http://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Client.publish). diff --git a/source/_components/notify.aws_sqs.markdown b/source/_components/notify.aws_sqs.markdown index b89bdbc8a06..d4a6c836eb0 100644 --- a/source/_components/notify.aws_sqs.markdown +++ b/source/_components/notify.aws_sqs.markdown @@ -9,12 +9,12 @@ sharing: true footer: true logo: aws_sqs.png ha_category: Notifications -ha_release: 0.20 +ha_release: "0.20" --- -The AWS SQS notify platform enables publishing to an [AWS SQS](https://aws.amazon.com/sqs/) message queue. +The `aws_sqs` notification platform enables publishing to an [AWS SQS](https://aws.amazon.com/sqs/) message queue. -### Configuration +To use this notification platform in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -35,7 +35,7 @@ Configuration variables: - **region_name** (*Required*): The region identifier to connect to. The default is `us-east-1`. - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -### Usage +### {% linkable_title Usage %} AWS SQS is a notify platform and thus can be controlled by calling the notify service [as described here](/components/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS docs](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html). diff --git a/source/_components/notify.ecobee.markdown b/source/_components/notify.ecobee.markdown index a8a4f93c2d2..0eb55d9b7c1 100644 --- a/source/_components/notify.ecobee.markdown +++ b/source/_components/notify.ecobee.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Ecobee Notify" -description: "Instructions how to setup the Ecobee notify component within Home Assistant." +description: "Instructions how to setup the Ecobee notification component within Home Assistant." date: 2016-05-12 09:00 sidebar: true comments: false @@ -9,12 +9,12 @@ sharing: true footer: true logo: ecobee.png ha_category: Notify -ha_release: 0.20 +ha_release: "0.20" --- -To get your Ecobee sensors working with Home Assistant, you must first have the main [Ecobee component](/components/ecobee/) loaded and running. Once you have that configured, you can setup this component to send messages to your thermostat. +To get your Ecobee notifications working with Home Assistant, you must first have the main [Ecobee component](/components/ecobee/) loaded and running. Once you have that configured, you can setup this component to send messages to your Ecobee device. -Add the following to your `configuration.yaml` file: +To use this notification platform in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -26,7 +26,6 @@ notify: Configuration variables: - **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **index** (*Optional*): If you have more than one thermostat, you can create a notifier for each one by providing the zero based index for each thermostat. (Default: 0) To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/notify.twilio_sms.markdown index 91413c2df3f..f8865443eea 100644 --- a/source/_components/notify.twilio_sms.markdown +++ b/source/_components/notify.twilio_sms.markdown @@ -9,12 +9,12 @@ sharing: true footer: true logo: twilio.png ha_category: Notifications -ha_release: 0.20 +ha_release: "0.20" --- -The `twilio` notify platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). +The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). -To use this nofification in your installation, add the following to your `configuration.yaml` file: +To use this notification platform in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/sensor.lastfm.markdown b/source/_components/sensor.lastfm.markdown index a8c8edbf3f5..b8dc42ff417 100644 --- a/source/_components/sensor.lastfm.markdown +++ b/source/_components/sensor.lastfm.markdown @@ -10,7 +10,7 @@ footer: true logo: lastfm.png ha_category: Sensor ha_iot_class: "Cloud Polling" -ha_release: 0.20 +ha_release: "0.20" --- diff --git a/source/_components/sensor.supervisord.markdown b/source/_components/sensor.supervisord.markdown index 28f7dc41e5a..c51ed73c8f0 100644 --- a/source/_components/sensor.supervisord.markdown +++ b/source/_components/sensor.supervisord.markdown @@ -8,11 +8,13 @@ comments: false sharing: true footer: true ha_category: Sensor -ha_release: 0.20 +ha_release: "0.20" --- The `supervisord` platform allows you to track the states of [Supervisor](http://supervisord.org/). +To use this sensor in your installation, add the following to your `configuration.yaml` file: + ```yaml # Example configuration.yaml entry sensor: From 42b1cd30baea134a11635badb31647c07ff3bd7b Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 12:10:23 +0200 Subject: [PATCH 27/35] Add ha_release --- source/_components/device_tracker.asuswrt.markdown | 12 +++++++----- source/_components/sensor.nest.markdown | 6 +++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/source/_components/device_tracker.asuswrt.markdown b/source/_components/device_tracker.asuswrt.markdown index 74e76adce4e..0b7edf68dd9 100644 --- a/source/_components/device_tracker.asuswrt.markdown +++ b/source/_components/device_tracker.asuswrt.markdown @@ -15,10 +15,6 @@ ha_release: pre 0.7 The `asuswrt` platform offers presence detection by looking at connected devices to a [ASUSWRT](http://event.asus.com/2013/nw/ASUSWRT/) based router. -

    -This device tracker needs telnet to be enabled on the router. -

    - To use an ASUSWRT router in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -26,14 +22,20 @@ To use an ASUSWRT router in your installation, add the following to your `config device_tracker: platform: asuswrt host: YOUR_ROUTER_IP + protocol: telnet username: YOUR_ADMIN_USERNAME password: YOUR_ADMIN_PASSWORD ``` Configuration variables: -- **host** (*Required*): The IP address of your router, e.g. 192.168.1.1. +- **host** (*Required*): The IP address of your router, eg. 192.168.1.1. +- **protocol** (*Optional*): The protocol (`ssh` or `telnet`) to use. Defaults to `ssh`. - **username** (*Required*: The username of an user with administrative privileges, usually *admin*. - **password** (*Required*): The password for your given admin account. +

    +You need to enable telnet on your router if you choose to use `protocol: telnet`. +

    + See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/sensor.nest.markdown b/source/_components/sensor.nest.markdown index 2cd7e1c9dde..fd62f7e51b1 100644 --- a/source/_components/sensor.nest.markdown +++ b/source/_components/sensor.nest.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: nest_thermostat.png ha_category: Sensor +ha_release: pre 0.7 --- @@ -59,4 +60,7 @@ Configuration variables: - 'wind_direction' - 'co_status' # Nest Protect only - 'smoke_status' # Nest Protect only -

    You must have the [Nest component](/components/nest/) configured to use this sensor.

    + +

    +You must have the [Nest component](/components/nest/) configured to use this sensor. +

    From 5f68263ee7afe9698d59277d70062cd6041a480e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 12:28:53 +0200 Subject: [PATCH 28/35] Update --- source/_components/history.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/history.markdown b/source/_components/history.markdown index 90e5df451aa..e7fedec64f3 100644 --- a/source/_components/history.markdown +++ b/source/_components/history.markdown @@ -9,10 +9,11 @@ sharing: true footer: true logo: home-assistant.png ha_category: "History" +ha_release: pre 0.7 --- -This component will track everything that is going on within Home Assistant and allows the user to browse through it. +The `history` component will track everything that is going on within Home Assistant and allows the user to browse through it. To enable the history option in your installation, add the following to your `configuration.yaml` file: From 868cc3a56943dc1c9777db4ff38fe2fb14e14890 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 12:29:13 +0200 Subject: [PATCH 29/35] Add initial docs for recorder --- source/_components/recorder.markdown | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 source/_components/recorder.markdown diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown new file mode 100644 index 00000000000..cd39c7e4180 --- /dev/null +++ b/source/_components/recorder.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "Recorder" +description: "Instructions how to configure the data recorder for Home Assistant." +date: 2016-05-21 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: "History" +featured: true +ha_release: "0.20" +--- + +The `recorder` component is storing details in the local database which then are handled by the [`history` component](/component/history/). + +To setup the `recorder` component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +recorder: + purge_days: DAYS +``` + +Configuration variables: + +- **purge_days** (*Optional*): Delete events and states older than x days. + From 5f411b67cc79506153ae65217095c05cbb4b0367 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Wed, 4 May 2016 22:24:59 +0200 Subject: [PATCH 30/35] qwikswitch-docs --- source/_components/light.qwikswitch.markdown | 22 ++++++++ source/_components/qwikswitch.markdown | 49 ++++++++++++++++++ source/_components/switch.qwikswitch.markdown | 23 ++++++++ source/images/supported_brands/qwikswitch.png | Bin 0 -> 4665 bytes 4 files changed, 94 insertions(+) create mode 100644 source/_components/light.qwikswitch.markdown create mode 100644 source/_components/qwikswitch.markdown create mode 100644 source/_components/switch.qwikswitch.markdown create mode 100644 source/images/supported_brands/qwikswitch.png diff --git a/source/_components/light.qwikswitch.markdown b/source/_components/light.qwikswitch.markdown new file mode 100644 index 00000000000..639f681a7ee --- /dev/null +++ b/source/_components/light.qwikswitch.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "QwikSwitch Lights" +description: "Instructions how to integrate Qwikswitch Dimemrs and Relays as lights into Home Assistant." +date: 2016-05-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: qwikswitch.png +ha_category: Light +ha_iot_class: "Local Push" +ha_release: 0.19 +--- + + +The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) Relays and Dimmers as lights from within Home Assistant. + +They will be automatically discovered if the discovery component is enabled. + +For more configuration information see the [QwikSwitch component](/components/qwikswitch/) documentation. + diff --git a/source/_components/qwikswitch.markdown b/source/_components/qwikswitch.markdown new file mode 100644 index 00000000000..d1456dd9bcf --- /dev/null +++ b/source/_components/qwikswitch.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "QwikSwitch QSUSB Hub" +description: "Instructions how to integrate the QwikSwitch QSUSB Hub into Home Assistant." +date: 2016-05-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: qwikswitch.png +ha_category: Hub +featured: true +--- + + +The `qwikswitch` component is the main component to integrate various [QwikSwitch](http://www.qwikswitch.co.za/) devices with Home Assistant. + +Loading the `qwikswitch` component will automatically add all devices from the QS Mobile application. QS Mobile controls the QSUSB Modem device. + +Currently QwikSwitch Relays and LED Dimmers are supported (tested). QwikSwitch Relay devices can be Switches or [Lights](/components/qwikswitch/lights/) in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a Switch, otherwise a Light. + +Example configuration: + +```yaml +# Example configuration.yaml entry +qwikswitch: + url: 'http://127.0.0.1:2020' +``` + +{% linkable_title QwikSwitch Buttons %} + +QwikSwitch devices (i.e. Tranmitter Buttons) will fire events on the Home Assistant bus. These events can then be used as triggers for any `automation` action, as follows: + +```yaml +automation: + - alias: Action - Respond to button press + trigger: + platform: event + event_type: qwikswitch.button.@12df34 +``` + +`event_type` names should be in the format **qwikswitch.button.@__ID__**. where **@__ID__** will be captured in the Home Assistant log when pressing the button. Alternatively, you can also access the listen API call by going to 'http://127.0.0.1:2020/&listen' and then pressing the button. + +Currently Event will be created for the following commands (cmd) value in the Listen packet: +- `TOGGLE` - Normal QwikSwitch Transmitter button +- `SCENE EXE` - QwikSwitch Scene Transmitter buttons +- `LEVEL` - QwikSwitch OFF Tranmitter buttons + +Technically this could work for Keyfobs, Door Sensors and PIR Tranmitters as well. diff --git a/source/_components/switch.qwikswitch.markdown b/source/_components/switch.qwikswitch.markdown new file mode 100644 index 00000000000..bdacbc2e827 --- /dev/null +++ b/source/_components/switch.qwikswitch.markdown @@ -0,0 +1,23 @@ +--- +layout: page +title: "QwikSwitch Switch" +description: "Instructions how to integrate QwikSwitch Relays into Home Assistant." +date: 2016-05-04 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: qwikswitch.png +ha_category: Switch +ha_iot_class: "Local Push" +ha_release: 0.19 +--- + + +The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) Relays as Switches from within Home Assistant. + +QwikSwitch Relay devices can be Switches or [Lights](/components/qwikswitch/lights/) in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a Switch, otherwise a Light. + +They will be automatically discovered from the QSUSB API if the discovery component is enabled. + +For more configuration information see the [QwikSwitch component](/components/qwikswitch/) documentation. diff --git a/source/images/supported_brands/qwikswitch.png b/source/images/supported_brands/qwikswitch.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f7a4ecd287ba63c5eee2ef79c83e56680fc227 GIT binary patch literal 4665 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 Date: Sun, 8 May 2016 20:46:11 +0200 Subject: [PATCH 31/35] New qwikswitch logo --- source/images/supported_brands/qwikswitch.png | Bin 4665 -> 27201 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/supported_brands/qwikswitch.png b/source/images/supported_brands/qwikswitch.png index f9f7a4ecd287ba63c5eee2ef79c83e56680fc227..5c310ad4fdafacc4f46b947fe1fce43160e4b701 100644 GIT binary patch literal 27201 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 literal 4665 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 Date: Sat, 21 May 2016 15:56:32 +0200 Subject: [PATCH 32/35] Un-freature recorder --- source/_components/recorder.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index cd39c7e4180..c55569f7b7d 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: home-assistant.png ha_category: "History" -featured: true +featured: false ha_release: "0.20" --- From f10079d299d99ae7735b7c3980bc13c89a1af515 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 15:58:19 +0200 Subject: [PATCH 33/35] Un-feature octoprint --- source/_components/octoprint.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown index 67b3846901b..c86b1975aeb 100644 --- a/source/_components/octoprint.markdown +++ b/source/_components/octoprint.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: octoprint.png ha_category: Hub -featured: true +featured: false ha_release: 0.19 --- From 9e7a8ab76b08fef73ade1c1b90ea6b1809c2e42c Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 21 May 2016 16:21:06 +0200 Subject: [PATCH 34/35] Update links and fix a couple of typos --- source/_components/light.qwikswitch.markdown | 8 ++++---- source/_components/qwikswitch.markdown | 19 ++++++++++++------- source/_components/switch.qwikswitch.markdown | 8 ++++---- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/source/_components/light.qwikswitch.markdown b/source/_components/light.qwikswitch.markdown index 639f681a7ee..61880ae5736 100644 --- a/source/_components/light.qwikswitch.markdown +++ b/source/_components/light.qwikswitch.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "QwikSwitch Lights" -description: "Instructions how to integrate Qwikswitch Dimemrs and Relays as lights into Home Assistant." +title: "QwikSwitch Light" +description: "Instructions how to integrate Qwikswitch dimmers and relays as lights into Home Assistant." date: 2016-05-04 00:00 sidebar: true comments: false @@ -10,11 +10,11 @@ footer: true logo: qwikswitch.png ha_category: Light ha_iot_class: "Local Push" -ha_release: 0.19 +ha_release: "0.20" --- -The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) Relays and Dimmers as lights from within Home Assistant. +The `qwikswitch` light platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays and dimmers as lights from within Home Assistant. They will be automatically discovered if the discovery component is enabled. diff --git a/source/_components/qwikswitch.markdown b/source/_components/qwikswitch.markdown index d1456dd9bcf..dd65621918c 100644 --- a/source/_components/qwikswitch.markdown +++ b/source/_components/qwikswitch.markdown @@ -9,15 +9,16 @@ sharing: true footer: true logo: qwikswitch.png ha_category: Hub -featured: true +featured: false +ha_release: "0.20" --- The `qwikswitch` component is the main component to integrate various [QwikSwitch](http://www.qwikswitch.co.za/) devices with Home Assistant. -Loading the `qwikswitch` component will automatically add all devices from the QS Mobile application. QS Mobile controls the QSUSB Modem device. +Loading the `qwikswitch` component will automatically adds all devices from the QS Mobile application. QS Mobile controls the QSUSB Modem device. -Currently QwikSwitch Relays and LED Dimmers are supported (tested). QwikSwitch Relay devices can be Switches or [Lights](/components/qwikswitch/lights/) in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a Switch, otherwise a Light. +Currently QwikSwitch relays and LED dimmers are supported (tested). QwikSwitch relay devices can be [switches](/components/switch.qwikswitch/) or [lights](/components/light.qwikswitch/) in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a switch, otherwise as a light. Example configuration: @@ -27,9 +28,13 @@ qwikswitch: url: 'http://127.0.0.1:2020' ``` -{% linkable_title QwikSwitch Buttons %} +Configuration variables: -QwikSwitch devices (i.e. Tranmitter Buttons) will fire events on the Home Assistant bus. These events can then be used as triggers for any `automation` action, as follows: +- **url** (*Required*): The URL including the port of your QwikSwitch hub. + +### {% linkable_title QwikSwitch Buttons %} + +QwikSwitch devices (i.e. transmitter buttons) will fire events on the Home Assistant bus. These events can then be used as triggers for any `automation` action, as follows: ```yaml automation: @@ -44,6 +49,6 @@ automation: Currently Event will be created for the following commands (cmd) value in the Listen packet: - `TOGGLE` - Normal QwikSwitch Transmitter button - `SCENE EXE` - QwikSwitch Scene Transmitter buttons -- `LEVEL` - QwikSwitch OFF Tranmitter buttons +- `LEVEL` - QwikSwitch OFF Transmitter buttons -Technically this could work for Keyfobs, Door Sensors and PIR Tranmitters as well. +Technically this could work for Keyfobs, door sensors, and PIR transmitters as well. diff --git a/source/_components/switch.qwikswitch.markdown b/source/_components/switch.qwikswitch.markdown index bdacbc2e827..8c2b4833f5f 100644 --- a/source/_components/switch.qwikswitch.markdown +++ b/source/_components/switch.qwikswitch.markdown @@ -1,7 +1,7 @@ --- layout: page title: "QwikSwitch Switch" -description: "Instructions how to integrate QwikSwitch Relays into Home Assistant." +description: "Instructions how to integrate QwikSwitch relays into Home Assistant." date: 2016-05-04 00:00 sidebar: true comments: false @@ -10,13 +10,13 @@ footer: true logo: qwikswitch.png ha_category: Switch ha_iot_class: "Local Push" -ha_release: 0.19 +ha_release: "0.20" --- -The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) Relays as Switches from within Home Assistant. +The `qwikswitch` platform allows you to control your [QwikSwitch](http://www.qwikswitch.co.za/) relays as switches from within Home Assistant. -QwikSwitch Relay devices can be Switches or [Lights](/components/qwikswitch/lights/) in Home-Assistant. If the device name in the QSUSB app ends with ` Switch` it will be created as a Switch, otherwise a Light. +If the device name in the QSUSB app ends with `Switch` it will be created as a switch, otherwise as a [light](/components/light.qwikswitch/). They will be automatically discovered from the QSUSB API if the discovery component is enabled. From 1f29e6b9e0e9911476041b0273cd59c6ff53e812 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 21 May 2016 14:58:03 -0700 Subject: [PATCH 35/35] Add 0.20 blog post --- source/_components/logentries.markdown | 1 - source/_components/recorder.markdown | 2 +- .../_components/sensor.moldindicator.markdown | 7 +- source/_posts/2016-05-21-release-020.markdown | 84 +++++++++++++++++++ .../_topics/splitting_configuration.markdown | 11 +++ source/_topics/templating.markdown | 1 + 6 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 source/_posts/2016-05-21-release-020.markdown diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown index 7517cb4e32b..8a414dbfcec 100644 --- a/source/_components/logentries.markdown +++ b/source/_components/logentries.markdown @@ -23,4 +23,3 @@ logentries: Configuration variables: - **token** (*Required*): Your Logentries log token -- **SSL** (*Optional*) diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index c55569f7b7d..2ab0afbbe76 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -20,7 +20,7 @@ To setup the `recorder` component in your installation, add the following to you ```yaml # Example configuration.yaml entry recorder: - purge_days: DAYS + purge_days: 14 ``` Configuration variables: diff --git a/source/_components/sensor.moldindicator.markdown b/source/_components/sensor.moldindicator.markdown index 83e241016a5..acfec6b17ca 100644 --- a/source/_components/sensor.moldindicator.markdown +++ b/source/_components/sensor.moldindicator.markdown @@ -1,5 +1,5 @@ --- -layout: component +layout: page title: "Mold Indicator" description: "How to use the mold growth indication component in Home Assistant" date: 2016-02-11 22:00 @@ -8,6 +8,7 @@ comments: false sharing: true footer: true ha_category: Sensor +ha_release: '0.20' --- The Mold Indicator sensor component consumes information of two temperature sensors and a humidity sensor to give an indication for possible mold growth in your home. In case of bad ventilation and insulation, the indoor humidity may lead to condensation on cold surfaces as the windows or even walls. Condensation or a high relative humidity near those cold surfaces leads to a higher risk for mold growth. This sensor component estimates the temperature at a pre-calibrated critical point in the room (the coldest surface) and calculates the relative humidity of the air at that point. If the sensor value rises above approximately 70 percent, mold growth might occur and the room should be ventilated. At 100%, the air humidity condensates at the critical point. @@ -30,4 +31,6 @@ In this case, the weather forecast temperature sensor is used for the outside te The Mold Indicator sensor component needs to be calibrated in order to estimate the temperature at the critical point from the outdoor and indoor temperature. First find the coldest surface in the room (critical point), which is typically near the window frames, but depends on the insulation of your home. For calibration you need to measure the temperature at this critical point and simultaneously write down the values for the indoor- and outdoor temperature sensors used for the Mold Indicator. Be sure that there is a significant indoor to outdoor temperature difference to get the best calibration results. With the three measured temperatures (in Celsius or Fahrenheit), the calibration_factor for your configuration file is given by: -calibration_factor = (temp_indoor - temp_outdoor) / (temp_criticalpoint - temp_outdoor) \ No newline at end of file +```text +calibration_factor = (temp_indoor - temp_outdoor) / (temp_criticalpoint - temp_outdoor) +``` diff --git a/source/_posts/2016-05-21-release-020.markdown b/source/_posts/2016-05-21-release-020.markdown new file mode 100644 index 00000000000..a98f9001498 --- /dev/null +++ b/source/_posts/2016-05-21-release-020.markdown @@ -0,0 +1,84 @@ +--- +layout: post +title: "0.20: Roku, Last.FM, AWS, Twilio" +description: "New release of Home Assistant is bringing a lot of great goodies for everyone. New media players, template optoins and a lot more." +date: 2016-05-21 11:06:00 -0700 +date_formatted: "May 21, 2016" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +--- + + +Tons of new supported things in 0.20. + +- Restarting now supported without forking ([@jaharkes]) +- Add [purge days option] to recorder component ([@justyns], [@infamy]) +- Generic load_platform mechanism for entity components ([@kellerza]) +- Template: new [`relative_time`] function to render ie. `7 seconds ago` ([@robbiet480]) +- Sensor: [supervisord] now supported ([@happyleavesaoc]) +- Docker: we should no longer get SSL errors with requests ([@lwis]) +- Media Player: [Google Play Music Desktop Player] now supported ([@GreenTurtwig]) +- Notify: [Twilio SMS] platform added ([@robbiet480]) +- Device Tracker: [Asus WRT] will now default to SSH (but telnet is still an option) ([@froz]) +- Support [Nest Protect] smoke alarms ([@khabi]) +- Configurator: allow supplying a link to the user ([@mnestor]) +- Media Player: [Roku] now supported ([@bah2830]) +- Sensor: [Last.FM] now supported ([@darookee], [@GreenTurtwig]) +- Notify: Amazon [Lambda], [SNS], [SQS] now supported ([@robbiet480]) +- Light: allow human readable colors in turn_on command ([@robbiet480]) +- YAML: new include dir options [`!include_dir_merge_list`] and [`!include_dir_merge_named`] ([@happyleavesaoc]) +- Media Player: [LG Netcast TVs] now supported ([@wokar]) +- Media Player: Allow enqueuing media on Sonos ([@shaftoe]) +- Notify: [Ecobee thermostats] now supported ([@nkgilley]) +- Sensor: [mold indicator] added ([@xifle]) +- Export to [Logentries] support added ([@omgapuppy]) +- Group more info dialog allows control of group domain if available ([@fignuts]) + +### {% linkable_title Breaking changes %} + +- Asus WRT will now default to SSH with Telnet being an option +```yaml +device_tracker: + platform: asuswrt + protocol: telnet +``` + +[@bah2830]: https://github.com/bah2830 +[@darookee]: https://github.com/darookee +[@fignuts]: https://github.com/fignuts +[@froz]: https://github.com/froz +[@GreenTurtwig]: https://github.com/GreenTurtwig +[@happyleavesaoc]: https://github.com/happyleavesaoc +[@infamy]: https://github.com/infamy +[@jaharkes]: https://github.com/jaharkes +[@justyns]: https://github.com/justyns +[@kellerza]: https://github.com/kellerza +[@khabi]: https://github.com/khabi +[@lwis]: https://github.com/lwis +[@mnestor]: https://github.com/mnestor +[@nkgilley]: https://github.com/nkgilley +[@omgapuppy]: https://github.com/omgapuppy +[@robbiet480]: https://github.com/robbiet480 +[@shaftoe]: https://github.com/shaftoe +[@wokar]: https://github.com/wokar +[@xifle]: https://github.com/xifle +[`!include_dir_merge_list`]: /topics/splitting_configuration/#advanced-usage +[`!include_dir_merge_named`]: /topics/splitting_configuration/#advanced-usage +[`relative_time`]: /topics/templating/#home-assistant-template-extensions +[Asus WRT]: /components/device_tracker.asuswrt/ +[Ecobee thermostats]: /components/notify.ecobee/ +[Google Play Music Desktop Player]: /components/media_player.gpmdp/ +[Lambda]: /components/notify.aws_lambda/ +[LG Netcast TVs]: /components/media_player.lg_netcast/ +[Logentries]: /components/logentries/ +[mold indicator]: /components/sensor.moldindicator/ +[Nest Protect]: /components/sensor.nest/ +[purge days option]: /components/recorder/ +[Roku]: /components/media_player.roku/ +[SNS]: /components/notify.aws_sns/ +[SQS]: /components/notify.aws_sqs/ +[supervisord]: /components/sensor.supervisord/ +[Twilio SMS]: /components/notify.twilio_sms/ +[Last.FM]: /components/sensor.lastfm/ diff --git a/source/_topics/splitting_configuration.markdown b/source/_topics/splitting_configuration.markdown index 562827bc1d0..7b613d780c5 100644 --- a/source/_topics/splitting_configuration.markdown +++ b/source/_topics/splitting_configuration.markdown @@ -179,3 +179,14 @@ That about wraps it up. If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to the [Gitter Chatroom](https://gitter.im/balloob/home-assistant) and ask away. +### {% linkable_title Advanced usage %} + +We offer four advanced options to include whole directories at once. + +`!include_dir_list` will return content of a directory as a list with each file content being an entry in the list. + +`!include_dir_named` will return content of a directory as a dictionary which maps filename => content of file. + +`!include_dir_merge_list` will return content of a directory as a list by merging all files (which should contain a list) into 1 big list. + +`!include_dir_merge_named` will return content of a directory as a dictionary by loading each file and merging it into 1 big dictionary. diff --git a/source/_topics/templating.markdown b/source/_topics/templating.markdown index 5211753d2a4..d127a9b501d 100644 --- a/source/_topics/templating.markdown +++ b/source/_topics/templating.markdown @@ -72,6 +72,7 @@ Home Assistant adds extensions to allow templates to access all of the current s - `as_timestamp` will convert datetime object or string to UNIX timestamp - `distance()` will measure the distance in meters between home, entity, coordinates. - `closest()` will find the closest entity. + - `relative_time(timestamp)` will format the date time as relative time vs now (ie 7 seconds) ## {% linkable_title Examples %}