From aecc3fda5fac78883d7599cad959654e478296f5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 15 Mar 2016 08:02:46 +0100 Subject: [PATCH 01/13] Add docs for input_slider --- source/_components/input_slider.markdown | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 source/_components/input_slider.markdown diff --git a/source/_components/input_slider.markdown b/source/_components/input_slider.markdown new file mode 100644 index 00000000000..5fd9d136c42 --- /dev/null +++ b/source/_components/input_slider.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Input Slider" +description: "Instructions how to integrate the Input Slider component into Home Assistant." +date: 2016-03-15 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +--- + +The `input_slider` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. + +```yaml +# Example configuration.yaml entry +input_slider: + slider1: + name: Slider 1 + initial: 30 + min: -20 + max: 35 +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the slider input. +- **name** (*Optional*): Friendly name of the slider input. +- **initial** (*Optional*): Initial value when Home Assistant starts. +- **min** (*Optional*): Minimum value for the slider. +- **max** (*Optional*): Maximum value for the slider. + From ac5437b93c880a73361d91c3403610f04baa27ba Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Wed, 16 Mar 2016 10:06:31 +0100 Subject: [PATCH 02/13] Add details about HBMQTT --- source/_components/mqtt.markdown | 38 ++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index de0a8573cc8..de4a8c04912 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -42,7 +42,21 @@ Configuration variables: ## {% linkable_title Picking a broker %} -The MQTT component needs you to run an MQTT broker for Home Assistant to connect to. There are three options, each with various degrees of ease of setup and privacy. +The MQTT component needs you to run an MQTT broker for Home Assistant to connect to. There are four options, each with various degrees of ease of setup and privacy. + +#### {% linkable_title Use the embedded broker %} + +Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the [HBMQTT broker](https://pypi.python.org/pypi/hbmqtt) is started and Home Asssistant connects to it. Home Assistant assumes that if you have MQTT platforms defined in your `configuration.yml` file that you want to use them and starts the broker as well. + +If you want to customize the settings of the embedded broker, use `embedded:` and the values shown in the [HBMQTT Broker configuration](http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration). + +```yaml +# Example configuration.yaml entry +mqtt: + embedded: + # Your HBMQTT config here. Example at: + # http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration +``` #### {% linkable_title Run your own %} @@ -140,12 +154,24 @@ The MQTT component will register the service `publish` which allows publishing m ## {% linkable_title Testing your setup %} -For debugging purposes `mosquitto` is shipping commandline tools to send and recieve MQTT messages. For sending test messages to a broker running on localhost: +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: ```bash $ mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" ``` +If you are using the embeeded MQTT broker, the command looks a little different because you need to add the MQTT protocol version. + +```bash +$ mosquitto_pub -V mqttv311 -t hello -m world +``` + +or if you are using a API password. + +```bash +$ mosquitto_pub -V mqttv311 -u homeassistant -P -t "hello" -m world +``` + Another way to send MQTT messages by hand is to use the "Developer Tools" in the Frontend. Choose "Call Service" and then `mqtt/mqtt_send` under "Available Services". Enter something similar to the example below into the "Service Data" field. ```json @@ -167,6 +193,14 @@ For reading all messages sent on the topic `home-assistant` to a broker running $ mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#" ``` +For the embeeded MQTT broker the command looks like the sample below. + +```bash +$ mosquitto_sub -V mqttv311 -t # -v +``` + +Add the username `homeassistant` and your API password if needed. + ## {% linkable_title Processing JSON %} The MQTT switch and sensor platforms support processing JSON over MQTT messages and parse them using JSONPath. JSONPath allows you to specify where in the JSON the value resides that you want to use. The following examples will always return the value `100`. From 4e0a0f01e2bd2870c43db2b3d9515ea952d8d9c5 Mon Sep 17 00:00:00 2001 From: Florian Holzapfel Date: Wed, 16 Mar 2016 10:14:29 +0100 Subject: [PATCH 03/13] add messagebird documentation --- .../_components/notify.message_bird.markdown | 45 +++++++++++++++++++ .../images/supported_brands/message_bird.svg | 3 ++ 2 files changed, 48 insertions(+) create mode 100644 source/_components/notify.message_bird.markdown create mode 100644 source/images/supported_brands/message_bird.svg diff --git a/source/_components/notify.message_bird.markdown b/source/_components/notify.message_bird.markdown new file mode 100644 index 00000000000..e8b35e0cdce --- /dev/null +++ b/source/_components/notify.message_bird.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "MessageBird" +description: "Instructions how to add user notifications to Home Assistant." +date: 2016-03-15 17:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: message_bird.svg +ha_category: Notifications +featured: true +--- + +The `MessageBird` notification platform sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. + +To enable MessageBird notifications in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + platform: message_bird + api_key: YOUR_API_KEY + name: NOTIFIER_NAME + sender: SENDER_NAME +``` + +Configuration variables: + +- **api_key** (*Required*): Enter the API key for MessageBird. Go to https://www.messagebird.com/ to retrieve your API key. +- **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`. +- **sender** (*Optional*): Setting the optional parameter `sender`. This will be the sender of the SMS. It may be either a telephone number (e.g. `+4915112345678`) or a text with a maximum length of 11 characters. Defaults to `HA`. + +### {% linkable_title Usage %} + +MessageBird 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 the specified mobile phone number(s). + +#### {% linkable_title Example service payload %} + +```json +{ + "message": "A message for many people", + "target": [ "+49123456789", "+43123456789" ] +} +``` diff --git a/source/images/supported_brands/message_bird.svg b/source/images/supported_brands/message_bird.svg new file mode 100644 index 00000000000..53acf93d22a --- /dev/null +++ b/source/images/supported_brands/message_bird.svg @@ -0,0 +1,3 @@ + \ No newline at end of file From 3a7cb29fc177452e4478ab5f9885d63011530da5 Mon Sep 17 00:00:00 2001 From: joopert Date: Sat, 19 Mar 2016 10:58:41 +0100 Subject: [PATCH 04/13] add wake on lan page --- .../_components/switch.wake_on_lan.markdown | 35 ++++++++++++++++++ source/images/supported_brands/ethernet.png | Bin 0 -> 635 bytes 2 files changed, 35 insertions(+) create mode 100644 source/_components/switch.wake_on_lan.markdown create mode 100644 source/images/supported_brands/ethernet.png diff --git a/source/_components/switch.wake_on_lan.markdown b/source/_components/switch.wake_on_lan.markdown new file mode 100644 index 00000000000..a2b3a3b9658 --- /dev/null +++ b/source/_components/switch.wake_on_lan.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Wake on LAN" +description: "Instructions how to integrate a wake on lan switch." +date: 2016-03-18 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ethernet.png +ha_category: Switch +--- + +The `wake_on_lan` (WOL) switch allows you to turn on a [WOL](https://en.wikipedia.org/wiki/Wake-on-LAN) enabled computer. + +

+The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. +

+ +To enable this switch in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +switch: + platform: wake_on_lan + name: "WOL" + host: "192.168.1.1" + mac_address: "00-01-02-03-04-05" +``` + +Configuration variables: + +- **name** (*Optional*): The name of the switch. Default is 'Wake on LAN'. +- **host** (*Optional*): The IP address or hostname to check the state of the device (on/off). +- **mac_address** (*Required*): MAC address to send the wake up command to. \ No newline at end of file diff --git a/source/images/supported_brands/ethernet.png b/source/images/supported_brands/ethernet.png new file mode 100644 index 0000000000000000000000000000000000000000..6f507b4ac946bf731f78e3401cb98aea3d34fbc0 GIT binary patch literal 635 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE(}8pX7+2iB`GtXjiOti+F{I+w+q;fl(t$F^KjxcWs9^9kzts9D z(Z;D*`Ryg`3YO~Dsy3yjUD^B>IM`x+c4@TEy#C|ZeVb2z54@RV`2K$?51%2wisvLC z+M;cj^K*~#1MUL0ISkwh_IqcPZ)2-tDnDRaz-rU;*ZKJY)(_GZAAh{AVA_|LX42*S z;5Uny)z`;tKSHX1$eXMC>93pmxb0NbS8o*t8r_&={!saW``bm<39NIN`fK@b zXG^-B_)H*0ei%!zY7%$6ShN$$g$cYh~_o|c;N)pmi(0q-i& z-q&*rPp((!&G_~$IAr_Vzbk_#?^?8%=@5@VT7v;|i=@IChD0_FV}}`xV4)3$?^t_l z_0|9WT6NF+6Bj}Pi&|VlIv?$moae8W{B_6g*U!*ORt!sE8tam;{rGcijV8kONer*Q zbm!c7@WzYjkJtJ|5YNqqcuwd+bd@OYYNOrfOJ)l$DPNNDHX=9e`sycKJJ|KIr`$1| zUb1=hBL?%2Kkxh2@MVd|N-V7SadrE~U&(&kBWJ$n{4W=s`{diSwLH^Hs+Y(-4r_bA iZR$c`q%HZjmq{R_OfdP$f}_Bs!QkoY=d#Wzp$Pzcf&$tA literal 0 HcmV?d00001 From 36f1ad2f07fec110b4a81f4c187155a7458df3a7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 22 Mar 2016 13:44:57 +0100 Subject: [PATCH 05/13] Minor layout updates --- source/_components/switch.wake_on_lan.markdown | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/_components/switch.wake_on_lan.markdown b/source/_components/switch.wake_on_lan.markdown index a2b3a3b9658..53e9e125045 100644 --- a/source/_components/switch.wake_on_lan.markdown +++ b/source/_components/switch.wake_on_lan.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Wake on LAN" +title: "Wake on LAN Switch" description: "Instructions how to integrate a wake on lan switch." date: 2016-03-18 18:00 sidebar: true @@ -11,7 +11,7 @@ logo: ethernet.png ha_category: Switch --- -The `wake_on_lan` (WOL) switch allows you to turn on a [WOL](https://en.wikipedia.org/wiki/Wake-on-LAN) enabled computer. +The `wake_on_lan` (WOL) switch platform allows you to turn on a [WOL](https://en.wikipedia.org/wiki/Wake-on-LAN) enabled computer.

The WOL switch can only turn on your computer and monitor the state. There is no universal way to turn off a computer remotely. @@ -23,13 +23,14 @@ To enable this switch in your installation, add the following to your `configura # Example configuration.yml entry switch: platform: wake_on_lan + mac_address: "00-01-02-03-04-05" name: "WOL" host: "192.168.1.1" - mac_address: "00-01-02-03-04-05" ``` Configuration variables: +- **mac_address** (*Required*): MAC address to send the wake up command to. - **name** (*Optional*): The name of the switch. Default is 'Wake on LAN'. - **host** (*Optional*): The IP address or hostname to check the state of the device (on/off). -- **mac_address** (*Required*): MAC address to send the wake up command to. \ No newline at end of file + From e6c9b47b2c17eb10bf0c945e80fa37568393257e Mon Sep 17 00:00:00 2001 From: Dan Cinnamon Date: Tue, 22 Mar 2016 22:36:44 -0500 Subject: [PATCH 06/13] Created a documentation page for the pulseaudio_loopback switch. --- .../switch.pulseaudio_loopback.markdown | 50 ++++++++++++++++++ .../switch.pulseaudio_loopback.html | 1 + source/images/supported_brands/pulseaudio.png | Bin 0 -> 11379 bytes 3 files changed, 51 insertions(+) create mode 100644 source/_components/switch.pulseaudio_loopback.markdown create mode 100644 source/components/switch.pulseaudio_loopback.html create mode 100644 source/images/supported_brands/pulseaudio.png diff --git a/source/_components/switch.pulseaudio_loopback.markdown b/source/_components/switch.pulseaudio_loopback.markdown new file mode 100644 index 00000000000..afb00a30957 --- /dev/null +++ b/source/_components/switch.pulseaudio_loopback.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: "PulseAudio Loopback Switch" +description: "Instructions how to use Pulseaudio loopback modules to build a flexible whole-home audio system." +date: 2016-03-22 21:00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: pulseaudio.png +ha_category: Switch +--- + + +The goal behind this switch is to allow a very flexible whole home audio system based upon PulseAudio. + +For example, for a system with a 7.1 surround sound card, and 3 instances of mpd running, it is possible to quickly route the output of any mpd instance to any of the 8 possible (4 stereo) channels on the sound card, by loading/unloading a loopback module. This loading/unloading functionality is provided by this component. When the switch is 'on', the loopback module is loaded. When the switch is 'off', the module is not loaded. + +The benefit of this approach is that this audio routing can occur without modifying the design-time configuration of mpd or PulseAudio. + +This component uses a TCP connection to control a local or remote PulseAudio server- so there are no local dependencies. + +To enable this switch, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +switch: + platform: pulseaudio_loopback + name: mpd1 -> bedroom + host: 127.0.0.1 + port: 4712 + source_name: mpd1.monitor + sink_name: bedroom +``` + +Configuration variables: + +- **sink_name** (*Required*): The name of the Pulseaudio sink that will recieve the audio. +- **source_name** (*Required*): The name of the Pulseaudio source that will supply the audio. +- **name** (*Optional*): Name of the switch. +- **host** (*Optional*): The IP address or host name of the PulseAudio server. If not specified, 127.0.0.1 is used. +- **port** (*Optional*): The port that Pulseaudio is listening on. Defaults to 4712. +- **buffer_size** (*Optional*): How much data to load from Pulseaudio at once. Default is 1KB. +- **tcp_timeout** (*Optional*): How long to wait for a response from Pulseaudio before giving up. Default is 3 seconds. + +

+This component relies on raw TCP commands to PulseAudio. In order for PulseAudio to accept commands with +this component, module-cli-protocol must be loaded on the PulseAudio server. +

+ diff --git a/source/components/switch.pulseaudio_loopback.html b/source/components/switch.pulseaudio_loopback.html new file mode 100644 index 00000000000..31ef8fc5717 --- /dev/null +++ b/source/components/switch.pulseaudio_loopback.html @@ -0,0 +1 @@ + diff --git a/source/images/supported_brands/pulseaudio.png b/source/images/supported_brands/pulseaudio.png new file mode 100644 index 0000000000000000000000000000000000000000..f90a8ad76d2cc4c1e0b09f1f600609ea6943b82a GIT binary patch literal 11379 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 literal 0 HcmV?d00001 From cca81201911e40c4a240f8e0801ba96a0c7f765e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Thu, 24 Mar 2016 12:38:35 +0100 Subject: [PATCH 07/13] Update docs --- source/_components/sensor.bitcoin.markdown | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/source/_components/sensor.bitcoin.markdown b/source/_components/sensor.bitcoin.markdown index 56145a9d814..e575411c0aa 100644 --- a/source/_components/sensor.bitcoin.markdown +++ b/source/_components/sensor.bitcoin.markdown @@ -12,11 +12,7 @@ ha_category: Sensor --- -The `bitcoin` platform displays various details about the [Bitcoin](https://bitcoin.org) network. - -If you have an online wallet from [Blockchain.info](https://blockchain.info/) the sensor is capable to show your current balance. - -You need to enable the API access for your online wallet to get the balance. To do that log in and move to 'Account Setting', choose 'IP Restrictions', and check 'Enable Api Access'. You will get an email message from blockchain.info where you must authorize the API access. +The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network. To add the Bitcoin sensor to your installation, add a selection of the available display options to your `configuration.yaml` file: @@ -24,8 +20,6 @@ To add the Bitcoin sensor to your installation, add a selection of the available # Example configuration.yaml entry sensor: platform: bitcoin - wallet: 'YOUR WALLET_ID' - password: YOUR_ACCOUNT_PASSWORD currency: YOUR CURRENCY display_options: - exchangerate @@ -53,8 +47,6 @@ sensor: Configuration variables: -- **wallet** (*Optional*): This is your wallet identifier from https://blockchain.info to access the online wallet. -- **password** (*Optional*): Password for your online wallet. - **currency** (*Optional*): The currency to exchange to, eg. CHF, USD, EUR, etc. Default is USD. - **display_options** array (*Required*): Options to display in the frontend. - **exchangerate**: Exchange rate of 1 BTC From 21d0332d9d29ae00eb2019c4ac48e7c35f30b054 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 24 Mar 2016 23:34:25 -0700 Subject: [PATCH 08/13] Add Uber component documentation --- source/_components/sensor.uber.markdown | 43 ++++++++++++++++++++++++ source/images/supported_brands/uber.png | Bin 0 -> 5778 bytes 2 files changed, 43 insertions(+) create mode 100644 source/_components/sensor.uber.markdown create mode 100755 source/images/supported_brands/uber.png diff --git a/source/_components/sensor.uber.markdown b/source/_components/sensor.uber.markdown new file mode 100644 index 00000000000..62e735c80b8 --- /dev/null +++ b/source/_components/sensor.uber.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Uber" +description: "How to integrate Uber in Home Assistant" +date: 2016-03-24 23:04 +sidebar: true +comments: false +sharing: true +footer: true +logo: uber.png +ha_category: Sensor +ha_iot_class: "Local Polling" +--- + + +The `uber` sensor will give you time and price estimates for all available [Uber](https://uber.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as estimated trip duration, distance and vehicle capacity. By default, 2 sensors will be created for each product at the given `start` location, one for pickup time and one for current price. The sensor is powered by the official Uber [API](https://developer.uber.com/). + + +You must create an application [here](https://developer.uber.com/dashboard/create) to obtain a `server_token`. + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + platform: uber + start_latitude: 37.8116380 + start_longitude: -122.2648050 + end_latitude: 37.7768520 + end_longitude: -122.4155500 + server_token: 'BeAPPTDsWZSHLf7fd9OWjZkIezweRw18Q8NltY27' + product_ids: + - '04a497f5-380d-47f2-bf1b-ad4cfdcb51f2' +``` + +Configuration variables: + +- **start_latitude** (*Required*): The starting latitude for a trip. +- **start_longitude** (*Required*): The starting longitude for a trip. +- **end_latitude** (*Optional*): The ending latitude for a trip. While `end_latitude` is optional, it is strongly recommended to provide an `end_latitude`/`end_longitude` when possible as you will get more accurate price and time estimates. +- **end_longitude** (*Optional*): The ending longitude for a trip. While `end_longitude` is optional, it is strongly recommended to provide an `end_latitude`/`end_longitude` when possible as you will get more accurate price and time estimates. +- **server_token** (*Required*): A server token obtained from [developer.uber.com](https://developer.uber.com) after [creating an app](https://developer.uber.com/dashboard/create). +- **product_ids** (*Options*): A list of Uber product UUIDs. If provided, sensors will only be created for the given product IDs. Please note that product IDs are region and some times even more specific geographies based. The easiest way to find a UUID is to click on a sensor in the Home Assistant frontend and look for "Product ID" in the attributes. diff --git a/source/images/supported_brands/uber.png b/source/images/supported_brands/uber.png new file mode 100755 index 0000000000000000000000000000000000000000..7a201cd47d5a6f5c17e12a2bffa61b182ad95eef GIT binary patch literal 5778 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 U=inX;U_t<`8@JWVRBa>w0Z>Ogvj6}9 literal 0 HcmV?d00001 From 387686f3fd4581d84a421d8e8ea91f26e67febc1 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Fri, 25 Mar 2016 18:33:38 -0700 Subject: [PATCH 09/13] Add GNTP documentation --- source/_components/notify.gntp.markdown | 35 ++++++++++++++++++++++++ source/images/supported_brands/gntp.png | Bin 0 -> 73058 bytes 2 files changed, 35 insertions(+) create mode 100644 source/_components/notify.gntp.markdown create mode 100644 source/images/supported_brands/gntp.png diff --git a/source/_components/notify.gntp.markdown b/source/_components/notify.gntp.markdown new file mode 100644 index 00000000000..f54d0344b22 --- /dev/null +++ b/source/_components/notify.gntp.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "GNTP (Growl)" +description: "Instructions for adding GNTP/Growl notifications to Home Assistant." +date: 2016-03-25 18:18 +sidebar: true +comments: false +sharing: true +footer: true +logo: gntp.png +ha_category: Notifications +--- + + +[GNTP](http://www.growlforwindows.com/gfw/help/gntp.aspx) is a specification for sending and receiving notifications between computers. The most well known server implementations are [Growl](http://growl.info) for Mac and [Growl for Windows](http://www.growlforwindows.com/gfw/). + +To use GNTP notifications, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + name: NOTIFER_NAME + platform: gntp +``` + +GNTP will attempt to connect to a local server running on port 23053 if no `hostname` is provided. + +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`. +- **app_name** (*Optional*): The application name that will be displayed on every notification and will be registered with the server. +- **app_icon** (*Optional*): The icon that will be displayed on every notification. You can provide a HTTP URL or a `file://` URL. File URLs only work if Home Assistant and the GNTP server are running on the same machine. If no `app_icon` is set a local copy of the Home Assistant logo will be used. If you choose to use a HTTP URL please make the maximum image size 150 px by 150 px as Growl for Mac will sometimes timeout when registering. +- **hostname** (*Optional*): The hostname or IP address of the GNTP server to contact. +- **password** (*Optional*): The password to authenticate to the GNTP server with. +- **port** (*Optional*): The port that the GNTP server runs on. The specification states that servers should not allow users to use any port other than 23053 but `port` is provided here just in case. diff --git a/source/images/supported_brands/gntp.png b/source/images/supported_brands/gntp.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ad0fb1334d7b91f9a82cabfef0730b288bc731 GIT binary patch literal 73058 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�fw_@XBPd!xDqs^ZHf8WxNj4YsUPPG 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

Y?JNMb(E_pCg|X=my<(zTS8Oe6 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 Ukwm~~u>b%707*qoM6N<$g3%HG-v9sr literal 0 HcmV?d00001 From 62ce8217c3593dfc5bf2b1348b51bc1b97f07eaf Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Fri, 25 Mar 2016 23:12:33 -0700 Subject: [PATCH 10/13] Improve media_player documentation --- source/_components/media_player.markdown | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index 24d81c3b2e9..f5d73832c2d 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -15,29 +15,18 @@ Interacts with media players on your network. Please check the sidebar for a ful ### {% linkable_title Media control services %} -Available services: `turn_off`, `volume_up`, `volume_down`, `media_play_pause`, `media_play`, `media_pause`, `media_next_track` +Available services: `turn_off`, `volume_up`, `volume_down`, `media_play_pause`, `media_pause`, `media_next_track` | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Target a specific media player. Defaults to all. -### {% linkable_title Media play services %} +### {% linkable_title Playing Media %} -There are three services to start playing YouTube video's on the media player. - -#### {% linkable_title Service `media_player/play_youtube_video` %} - -Service to start playing a YouTube video on the media player. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. -| `video` | no | YouTube video to be played, ie. `L0MK7qz13bU` - -#### {% linkable_title Service `media_player/start_fireplace` and `media_player/start_epic_sax` %} - -Will either start a fireplace or Epic Sax Guy 10h on the media player. +#### {% linkable_title Service `media_player/play_media` %} | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Target a specific media player. Defaults to all. +| `media_content_id` | no | A media identifier. The format of this is component dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes. +| `media_content_type` | no | A media type. Must be one of `MUSIC`, `TVSHOW`, `VIDEO`, `EPISODE`, `CHANNEL` or `PLAYLIST`. For example, to play music you would set `media_content_type` to `MUSIC`. From cc3413ae01bfc041fe5b82bcb0968316265e0647 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Fri, 25 Mar 2016 23:47:26 -0700 Subject: [PATCH 11/13] Lots more pretty media_player documentation updates! --- source/_components/media_player.markdown | 34 ++++++++++++++++++------ 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index f5d73832c2d..2df70ef698b 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -13,20 +13,38 @@ Interacts with media players on your network. Please check the sidebar for a ful ## {% linkable_title Services %} - ### {% linkable_title Media control services %} -Available services: `turn_off`, `volume_up`, `volume_down`, `media_play_pause`, `media_pause`, `media_next_track` +Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, `media_play_pause`, `media_play`, `media_pause`, `media_next_track`, `media_previous_track` | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Target a specific media player. Defaults to all. -### {% linkable_title Playing Media %} +#### {% linkable_title Service `media_player/mute_volume` %} + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Target a specific media player. Defaults to all. +| `mute` | no | True/false for mute/unmute + +#### {% linkable_title Service `media_player/set_volume_level` %} + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Target a specific media player. Defaults to all. +| `volume` | no | Integer for volume level + +#### {% linkable_title Service `media_player/media_seek` %} + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | Target a specific media player. Defaults to all. +| `position` | no | Position to seek to. The format is platform dependent. #### {% linkable_title Service `media_player/play_media` %} -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. -| `media_content_id` | no | A media identifier. The format of this is component dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes. -| `media_content_type` | no | A media type. Must be one of `MUSIC`, `TVSHOW`, `VIDEO`, `EPISODE`, `CHANNEL` or `PLAYLIST`. For example, to play music you would set `media_content_type` to `MUSIC`. +| Service data attribute | Optional | Description | +| ------------------------------- | -------- | ----------- | +| `entity_id` | yes | Target a specific media player. Defaults to all. +| `media_content_id` | no | A media identifier. The format of this is component dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes. +| `media_content_type` | no | A media type. Must be one of `MUSIC`, `TVSHOW`, `VIDEO`, `EPISODE`, `CHANNEL` or `PLAYLIST`. For example, to play music you would set `media_content_type` to `MUSIC`. From 286ecd799c66ca2ae51412e876f86b806294c135 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Fri, 25 Mar 2016 23:55:26 -0700 Subject: [PATCH 12/13] extra space to even out the media_player table --- source/_components/media_player.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index 2df70ef698b..0589f06e938 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -25,7 +25,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | yes | Target a specific media player. Defaults to all. -| `mute` | no | True/false for mute/unmute +| `mute` | no | True/false for mute/unmute #### {% linkable_title Service `media_player/set_volume_level` %} From c7c938e1116ebddf6982515ed3b4d478b1045867 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 26 Mar 2016 00:56:31 -0700 Subject: [PATCH 13/13] Blog post for 0.16 --- .../_components/media_player.yamaha.markdown | 42 ++++++++ source/_components/mqtt.markdown | 11 ++- .../_components/notify.message_bird.markdown | 3 +- source/_components/sensor.uber.markdown | 2 +- source/_components/switch.arduino.markdown | 4 + source/_components/tellstick.markdown | 12 +-- source/_components/vera.markdown | 13 ++- source/_components/zwave.markdown | 11 +++ ...ded-mqtt-broker-uber-yamaha-growl.markdown | 90 ++++++++++++++++++ .../images/supported_brands/message_bird.png | Bin 0 -> 3934 bytes .../images/supported_brands/message_bird.svg | 3 - source/images/supported_brands/yamaha.png | Bin 0 -> 35048 bytes 12 files changed, 169 insertions(+), 22 deletions(-) create mode 100644 source/_components/media_player.yamaha.markdown create mode 100644 source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown create mode 100644 source/images/supported_brands/message_bird.png delete mode 100644 source/images/supported_brands/message_bird.svg create mode 100644 source/images/supported_brands/yamaha.png diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/media_player.yamaha.markdown new file mode 100644 index 00000000000..9888cf684bf --- /dev/null +++ b/source/_components/media_player.yamaha.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Yamaha Network Receivers" +description: "Instructions how to integrate Yamaha Network Receivers into Home Assistant." +date: 2016-03-26 0:58 -0700 +sidebar: true +comments: false +sharing: true +footer: true +logo: yamaha.png +ha_category: Media Player +--- + + +The `yamaha` platform allows you to control [Yamaha Network Receivers](http://usa.yamaha.com/products/audio-visual/av-receivers-amps/rx) from Home Assistant. + +Supported devices: + +- HTR-4065 +- RX-V473 +- RX-V573 +- RX-V673 +- RX-V773 +- And more + +To add a Yamaha Network Receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + platform: yamaha + name: 'Basement Receiver' +``` +Configuration variables: + +- **name** (*Optional*): Name of the device + +A few notes: + +- This will automatically search your network for Yamaha receivers. It will add a media player device for each one. +- Currently the only controls that are available is Power On/Off, Mute, and Volume control. Other functions such as source select are in progress of being developed. + diff --git a/source/_components/mqtt.markdown b/source/_components/mqtt.markdown index 44bf80f8ba2..614af9061f8 100644 --- a/source/_components/mqtt.markdown +++ b/source/_components/mqtt.markdown @@ -46,7 +46,16 @@ The MQTT component needs you to run an MQTT broker for Home Assistant to connect #### {% linkable_title Use the embedded broker %} -Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the [HBMQTT broker](https://pypi.python.org/pypi/hbmqtt) is started and Home Asssistant connects to it. Home Assistant assumes that if you have MQTT platforms defined in your `configuration.yml` file that you want to use them and starts the broker as well. +Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the [HBMQTT broker](https://pypi.python.org/pypi/hbmqtt) is started and Home Asssistant connects to it. Default settings for the embedded broker: + +| Setting | Value | +| ------- | ----- | +| Host | localhost +| Port | 1883 +| Version | 3.1 +| User | homeassistant +| Password | Your API password +| Websocket port | 8080 If you want to customize the settings of the embedded broker, use `embedded:` and the values shown in the [HBMQTT Broker configuration](http://hbmqtt.readthedocs.org/en/latest/references/broker.html#broker-configuration). diff --git a/source/_components/notify.message_bird.markdown b/source/_components/notify.message_bird.markdown index e8b35e0cdce..82209bda957 100644 --- a/source/_components/notify.message_bird.markdown +++ b/source/_components/notify.message_bird.markdown @@ -7,9 +7,8 @@ sidebar: true comments: false sharing: true footer: true -logo: message_bird.svg +logo: message_bird.png ha_category: Notifications -featured: true --- The `MessageBird` notification platform sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. diff --git a/source/_components/sensor.uber.markdown b/source/_components/sensor.uber.markdown index 62e735c80b8..6b1dee6a78e 100644 --- a/source/_components/sensor.uber.markdown +++ b/source/_components/sensor.uber.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: uber.png ha_category: Sensor -ha_iot_class: "Local Polling" +ha_iot_class: "Cloud Polling" --- diff --git a/source/_components/switch.arduino.markdown b/source/_components/switch.arduino.markdown index b2a1b7ef5cd..c888d85d71a 100644 --- a/source/_components/switch.arduino.markdown +++ b/source/_components/switch.arduino.markdown @@ -24,6 +24,8 @@ switch: 11: name: Fan Office type: digital + default: on + negate: true 12: name: Light Desk type: digital @@ -34,6 +36,8 @@ Configuration variables: - **pins** (*Required*): Array of pins to use. The number corresponds with the pin numbering schema of your board. - **name**: Name that will be used in the frontend for the pin. - **type**: The type of the pin. At the moment only 'digital' is supported. + - **default**: The initial value for this port. + - **negate**: If this pin should be inverted. The digital pins are numbered from 0 to 13. The available pins are 2 till 13. For testing purposes you can use pin 13 because with that pin you can control the internal LED. diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index edca85a85b2..f0474c47575 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -18,14 +18,6 @@ To get started, add the devices to your `configuration.yaml` file. ```yaml # Example configuration.yaml entry -switch: - platform: tellstick - -sensor: - platform: tellstick - -# All dimmers will be picked up as lights. -light: - platform: tellstick +tellstick: + signal_repetitions: X ``` - diff --git a/source/_components/vera.markdown b/source/_components/vera.markdown index 782ca02cb7d..50167fd0d4a 100644 --- a/source/_components/vera.markdown +++ b/source/_components/vera.markdown @@ -14,8 +14,11 @@ ha_category: Hub The [Vera](http://getvera.com) ecosystem is using Z-Wave for communication between the Vera controller and the devices. -## {% linkable_title Building on top of Vera %} - - - [Vera Sensor](/components/sensor.vera/) - - [Vera Switch](/components/switch.vera/) - - [Vera Light](/components/light.vera/) +```yaml +vera: + vera_controller_url: http://192.168.1.161:3480/ + # Optional to exclude devices - this is a list of vera device ids + exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99] + # Optional to import switches as lights - this is a list of vera device ids + lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87] +``` diff --git a/source/_components/zwave.markdown b/source/_components/zwave.markdown index d4d33d4d3cd..5e1d15f7b18 100644 --- a/source/_components/zwave.markdown +++ b/source/_components/zwave.markdown @@ -108,3 +108,14 @@ automation: ``` The *entity_id* and *scene_id* of all triggered events can be seen in the console output. + +#### {% linkable_title Services %} + +The Z-Wave component exposes two services to help maintain the network. + +| Service | Description | +| ------- | ----------- | +| add_node | | +| remove_node | | +| heal_network | | +| soft_reset | | diff --git a/source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown b/source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown new file mode 100644 index 00000000000..1a325f9a243 --- /dev/null +++ b/source/_posts/2016-03-26-embedded-mqtt-broker-uber-yamaha-growl.markdown @@ -0,0 +1,90 @@ +--- +layout: post +title: "0.16: Embedded MQTT broker, Uber, Yamaha receivers and Growl" +description: "Home Assistant 0.16 has arrived." +date: 2016-03-26 0:10:00 -0700 +date_formatted: "March 26, 2016" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +--- + +Party people, 0.16 is here! The big thing with this release is that we have completely removed the barrier to get started by MQTT by being able to launch an embedded MQTT server: [hbMQTT]. Just add `mqtt:` to your config and a broker is launched and connected with Home Assistant. See the [documentation][embedded server] for more info. + +Further in this release a bunch of cool new stuff, bug fixes and rewrites for the Vera and Tellstick component (see breaking changes section at bottom for this!). + +Rock on. + + + + - Device Tracker - [OwnTracks]: Allow entry into passive zones using iBeacons ([@pavoni]) + - Tellstick: rewrite to [component][Tellstick] to address concurrency issues ([@stefan-jonasson]) + - Z-Wave: add [services][Z-Wave] to heal and soft reset network ([@srcLurker]) + - New component [input_slider] added ([@persandstrom]) + - Light - [Hue]: Option added to ignore unreachable property ([@maddox]) + - Notify: [MessageBird] support added ([@florianholzapfel]) + - HTTP: Failed login attempts are now logged ([@fabaff]) + - Vera: rewrite to [component][Vera] to simplify code and organize for reusability ([@pavoni]) + - Discovery: support for Squeezebox (Logitech media) server added ([@jaharkes]) + - Discovery: fix uPNP discovery crashing some routers ([@jaharkes]) + - Switch: [Wake on LAN] platform added ([@joopert]) + - Services for thermostats, notify and media player will now validate passed in parameters ([@MartinHjelmare]) + - Switch - [Arduino]: support for default state and negate port functionality ([@tilutza]) + - Switch: [PulseAudio loopback] now supported ([@Cinntax]) + - Sensor: [Uber] now supported ([@robbiet480]) + - Notify: [Growl (GNTP)] now supported ([@robbiet480]) + - Media Player: [Yamaha receivers] now supported ([@aoakeson]) + +[hbMQTT]: https://github.com/beerfactory/hbmqtt +[@aoakeson]: https://github.com/aoakeson +[@balloob]: https://github.com/balloob +[@Cinntax]: https://github.com/Cinntax +[@fabaff]: https://github.com/fabaff +[@florianholzapfel]: https://github.com/florianholzapfel +[@jaharkes]: https://github.com/jaharkes +[@joopert]: https://github.com/joopert +[@maddox]: https://github.com/maddox +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@pavoni]: https://github.com/pavoni +[@persandstrom]: https://github.com/persandstrom +[@robbiet480]: https://github.com/robbiet480 +[@srcLurker]: https://github.com/srcLurker +[@stefan-jonasson]: https://github.com/stefan-jonasson +[@tilutza]: https://github.com/tilutza +[embedded server]: /components/mqtt/#use-the-embedded-broker +[Arduino]: /components/switch.arduino/ +[Discovery]: /components/discovery/ +[Growl (GNTP)]: /components/notify.gntp/ +[Hue]: /components/light.hue/ +[input_slider]: /components/input_slider/ +[MessageBird]: /components/notify.message_bird/ +[OwnTracks]: /components/device_tracker.owntracks/ +[PulseAudio loopback]: /components/switch.pulseaudio_loopback/ +[Tellstick]: /components/tellstick/ +[Uber]: /components/sensor.uber/ +[Vera]: /components/vera/ +[Wake on LAN]: /components/switch.wake_on_lan/ +[Z-Wave]: /components/zwave/#services +[Yamaha receivers]: /components/media_player.yamaha/ + +### Breaking changes + - Automation: support for old deprecated config has been removed + + - Tellstick configuration has changed + +```yaml +tellstick: + signal_repetitions: X +``` + +- Vera configuration has changed + +```yaml +vera: + vera_controller_url: http://192.168.1.161:3480/ + # Optional to exclude devices - this is a list of vera device ids + exclude: [ 13, 14, 16, 20, 23, 72, 73, 74, 75, 76, 77, 78, 88, 89, 99] + # Optional to import switches as lights - this is a list of vera device ids + lights: [15, 17, 19, 21, 22, 24, 26, 43, 64, 70, 87] +``` diff --git a/source/images/supported_brands/message_bird.png b/source/images/supported_brands/message_bird.png new file mode 100644 index 0000000000000000000000000000000000000000..1beab0c385ce817f6894cdcca003c60e0d2d9893 GIT binary patch literal 3934 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 RKF(jVy*1jZ+~Qc|{{RUT7b*Y% literal 0 HcmV?d00001 diff --git a/source/images/supported_brands/message_bird.svg b/source/images/supported_brands/message_bird.svg deleted file mode 100644 index 53acf93d22a..00000000000 --- a/source/images/supported_brands/message_bird.svg +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/source/images/supported_brands/yamaha.png b/source/images/supported_brands/yamaha.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae38e57fed39c1979aa84fb0a33461227cd70cf GIT binary patch literal 35048 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