@ -31,3 +31,12 @@ Configuration variables:
|
||||
- **devices** (*Required*): List of devices with their topic.
|
||||
- **qos** (*Optional*): The QoS level of the topic.
|
||||
|
||||
|
||||
Example JSON you can publish to the topic (e.g. via mqtt.publish service):
|
||||
|
||||
```json
|
||||
{
|
||||
"topic": "/location/paulus",
|
||||
"payload": "home"
|
||||
}
|
||||
```
|
||||
|
@ -30,6 +30,8 @@ influxdb:
|
||||
blacklist:
|
||||
- entity.id1
|
||||
- entity.id2
|
||||
tags:
|
||||
- instance: prod
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
@ -41,4 +43,6 @@ Configuration variables:
|
||||
- **password** (*Optional*): The password for the database user account.
|
||||
- **ssl** (*Optional*): Use https instead of http to connect. Defaults to false.
|
||||
- **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false.
|
||||
- **blacklist** (*Optional*): List of entities not logged to influxdb.
|
||||
- **blacklist** (*Optional*): List of entities not logged to InfluxDB.
|
||||
- **tags** (*Optional*): Tags to mark the data.
|
||||
|
||||
|
@ -27,9 +27,9 @@ notify:
|
||||
api_key: asd97823jb628a34fwsdfwefd5384345tf2d *optional
|
||||
|
||||
joaoapps_join:
|
||||
device_id: group.android
|
||||
name: droid
|
||||
api_key: asd97823jb628a34fwsdfwefd5384345tf2d
|
||||
- name: android
|
||||
device_id: group.android
|
||||
api_key: asd97823jb628a34fwsdfwefd5384345tf2d
|
||||
```
|
||||
|
||||
The notify service has a few optional parameters such as icon and smallicon. You can use them like so:
|
||||
|
@ -17,9 +17,8 @@ ha_release: 0.24
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
|
||||
- [Binary Sensor](/components/binary_sensor.knx)
|
||||
- [Switch](/components/switch.knx)
|
||||
|
||||
The local ZigBee device (assuming XBee) must have an up to date Router or Coordinator API firmware installed.
|
||||
- [Switch](/components/switch.knx)
|
||||
- [Thermostat](/components/thermostat.knx)
|
||||
|
||||
A `knx` section must be present in the `configuration.yaml` file and contain the following options as required:
|
||||
|
||||
@ -31,4 +30,3 @@ knx:
|
||||
|
||||
- **host** (*Required*): The IP address of the KNX/IP interface to use. You can use "0.0.0.0" if your KNX/IP gateway supports discovery.
|
||||
- **port** (*Optional*): The UDP port number. Defaults to `3671`.
|
||||
|
||||
|
69
source/_components/light.flux_led.markdown
Normal file
@ -0,0 +1,69 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Flux Led/MagicLight"
|
||||
description: "Instructions how to setup Flux led/MagicLight within Home Assistant."
|
||||
date: 2015-07-17 20:09
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
ha_category: Light
|
||||
ha_iot_class: "Local Polling"
|
||||
featured: true
|
||||
ha_release: 0.25
|
||||
---
|
||||
|
||||
The `flux_led` support is integrated into Home Assistant as a light platform. Several brands use the same protocol and they have the HF-LPB100 chipset in common.
|
||||
|
||||
Example of bulbs:
|
||||
|
||||
- [Flux Smart Lighting](http://www.fluxsmartlighting.com/)
|
||||
- [MagicLight® Plus - WiFi Smart LED Light Bulb4](https://www.amazon.com/gp/product/B00NOC93NG)
|
||||
- [Flux WiFi Smart LED Light Bulb4](http://smile.amazon.com/Flux-WiFi-Smart-Light-Bulb/dp/B01A6GHHTE)
|
||||
- [WIFI smart LED light Bulb1](http://smile.amazon.com/gp/product/B01CS1EZYK)
|
||||
|
||||
The chances are high that you bulb or controller (eg. WiFi LED CONTROLLER) will work if you can control the device with the MagicHome app.
|
||||
|
||||
To enable those lights, add the following lines to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
light:
|
||||
- platform: flux_led
|
||||
automatic_add: BOOLEAN
|
||||
devices:
|
||||
IP_ADDR_1:
|
||||
name: CUSTOM_NAME_1
|
||||
IP_ADDR_2:
|
||||
name: CUSTOM_NAME_2
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **automatic_add** (*Optional*): To enable the automatic addition of lights on startup.
|
||||
- **devices** (*Optional*): A list of devices with their ip address and a custom name to use in the frontend.
|
||||
|
||||
Example configuration:
|
||||
|
||||
Will automatically search and add all lights on start up:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
light:
|
||||
- platform: flux_led
|
||||
automatic_add: True
|
||||
```
|
||||
|
||||
Will add two lights with given name:
|
||||
|
||||
```yaml
|
||||
light:
|
||||
# Example configuration.yaml entry
|
||||
- platform: flux_led
|
||||
devices:
|
||||
192.168.0.106:
|
||||
name: flux_lamppost
|
||||
192.168.0.109:
|
||||
name: flux_living_room_lamp
|
||||
```
|
||||
|
36
source/_components/light.x10.markdown
Normal file
@ -0,0 +1,36 @@
|
||||
---
|
||||
layout: page
|
||||
title: "X10"
|
||||
description: "Instructions how to setup X10 devices within Home Assistant."
|
||||
date: 2016-07-27
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: x10.gif
|
||||
ha_category: Light
|
||||
ha_iot_class: "Local Polling"
|
||||
ha_release: 0.25
|
||||
---
|
||||
|
||||
The `x10` light platform allows you to control your X10 based lights with Home Assistant.
|
||||
|
||||
Requires [Heyu x10 interface](http://www.heyu.org).
|
||||
|
||||
To enable those lights, add the following lines to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
light:
|
||||
- platform: x10
|
||||
lights:
|
||||
- name: Living Room Lamp
|
||||
id: a2
|
||||
- name: Bedroom Lamp
|
||||
id: a3
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **id** (*Required*): Device identifier. Composed of house code + unit id.
|
||||
- **name** (*Optional*): A friendly name for the device. By default *id* from the device is used.
|
30
source/_components/media_player.directv.markdown
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
layout: page
|
||||
title: "DirecTV"
|
||||
description: "Instructions how to integrate DirecTV receivers into Home Assistant."
|
||||
date: 2016-07-19 01:0+0000
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: directv.png
|
||||
ha_category: Media Player
|
||||
ha_release: "0.25"
|
||||
---
|
||||
|
||||
The [DirecTV](http://www.directv.com/) receivers will be automatically discovered if you enable the [discovery component](/components/discovery/).
|
||||
|
||||
The `directv` media player platform can also be forced to load by adding the following lines to your `configuration.yaml`:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
media_player:
|
||||
platform: directv
|
||||
host: 192.168.1.10
|
||||
name: DirecTV Living Room
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **host** *Optional*: Use only if you don't want to scan for devices.
|
||||
- **name** *Optional*: Use to give a specific name to the device.
|
40
source/_components/media_player.mpchc.markdown
Normal file
@ -0,0 +1,40 @@
|
||||
---
|
||||
layout: page
|
||||
title: "MPC-HC"
|
||||
description: "Instructions how to integrate MPC-HC into Home Assistant."
|
||||
date: 2016-07-27 21:21
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: mpchc.png
|
||||
ha_category: Media Player
|
||||
featured: true
|
||||
ha_release: 0.25.0
|
||||
---
|
||||
|
||||
|
||||
The `mpchc` platform allows you to connect a [Media Player Classic Home Cinema](https://mpc-hc.org/) to Home Assistant. It will allow you to see the current playing item, and respond to changes in the player's state.
|
||||
|
||||
For this component to function, you will need to enable the Web Interface in the MPC-HC options dialog.
|
||||
|
||||
<p class='img'>
|
||||
<img src='{{site_root}}/images/screenshots/mpc-hc.png' />
|
||||
</p>
|
||||
|
||||
To add MPC-HC to your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
media_player:
|
||||
platform: mpchc
|
||||
host: http://192.168.0.123
|
||||
port: 13579
|
||||
name: MPC-HC
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **host** (*Required*): The host name or address of the device that is running MPC-HC
|
||||
- **port** (*Required*): The port number, default 13579
|
||||
- **name** (*Optional*): The name of the device used in the frontend.
|
58
source/_components/media_player.russound_rnet.markdown
Normal file
@ -0,0 +1,58 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Russound RNET"
|
||||
description: "Instructions on how to integrate Russound RNET devices into Home Assistant."
|
||||
date: 2016-07-21 22:00
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: russound.png
|
||||
ha_category: Media Player
|
||||
ha_release: 0.25
|
||||
---
|
||||
|
||||
The `russound_rnet` platform allows you to control Russound devices that make use of the RNET protocol.
|
||||
|
||||
This has initially been tested against a Russound CAV6.6 unit with six zones and six sources.
|
||||
|
||||
Connecting to the Russound device is only possible by TCP, you can make use of a TCP to Serial gateway such as [tcp_serial_redirect](https://github.com/pyserial/pyserial/blob/master/examples/tcp_serial_redirect.py)
|
||||
|
||||
To add a device to your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
media_player:
|
||||
platform: russound_rnet
|
||||
host: 192.168.1.10
|
||||
port: 1337
|
||||
name: Russound
|
||||
zones:
|
||||
1:
|
||||
name: Main Bedroom
|
||||
2:
|
||||
name: Living Room
|
||||
3:
|
||||
name: Kitchen
|
||||
4:
|
||||
name: Bathroom
|
||||
5:
|
||||
name: Dining Room
|
||||
6:
|
||||
name: Guest Bedroom
|
||||
sources:
|
||||
- name: Sonos
|
||||
- name: Sky+
|
||||
- name: iPod
|
||||
- name: Unused 1
|
||||
- name: Unused 2
|
||||
- name: Kodi
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **host** (*Required*): The IP of the TCP gateway
|
||||
- **port** (*Required*): The port of the TCP gateway
|
||||
- **name** (*Required*): The name of the device
|
||||
- **zones** (*Required*): This is the list of zones available
|
||||
- **sources** (*Required*): The list of sources available, these must be in order as they are connected to the device
|
@ -13,27 +13,75 @@ featured: true
|
||||
ha_release: 0.7.3
|
||||
---
|
||||
|
||||
The `sonos` platform allows you to control your [Sonos](http://www.sonos.com) HiFi wireless speakers and audio components from Home Assistant.
|
||||
The `sonos` platform allows you to control your [Sonos](http://www.sonos.com) HiFi wireless speakers and audio components from Home Assistant. By default it supports auto-discovery provided by Home Assistant, and you don't need to add anything to your `configuration.yaml`. Alternatively, there are some manual configuration options, listed as follows:
|
||||
|
||||
To add your Sonos components to your installation, add the following to your `configuration.yaml` file. It will perform auto-discovery of your connected speakers.
|
||||
To add your Sonos components to your installation, add the following to your `configuration.yaml` file. It will perform Sonos auto-discovery of your connected speakers.
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
# Example configuration.yaml entry using Sonos discovery
|
||||
media_player:
|
||||
platform: sonos
|
||||
```
|
||||
|
||||
You can also specify hosts to connect to if they cannot be found with auto-discovery.
|
||||
If you have multiple network devices, you can provide the IP address of the device that should be used for Sonos auto-discovery.
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
# Example configuration.yaml entry using Sonos discovery on a specific interface
|
||||
media_player:
|
||||
platform: sonos
|
||||
hosts: IP
|
||||
interface_addr: 192.0.2.1
|
||||
```
|
||||
|
||||
### {% linkable_title Service %}
|
||||
You can also specify one or more hosts to connect to if they cannot be found with Sonos auto-discovery.
|
||||
|
||||
There are two extra services exposed that will allow you to take a snapshot of what is currently playing and restore it afterwards. This is useful if you want to play a doorbell or notification sound and resume playback afterwards.
|
||||
```yaml
|
||||
# Example configuration.yaml entry with manually specified addresses
|
||||
media_player:
|
||||
platform: sonos
|
||||
hosts: 192.0.2.25
|
||||
```
|
||||
|
||||
or, for multiple hosts:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry with manually specified addresses
|
||||
media_player:
|
||||
platform: sonos
|
||||
hosts:
|
||||
- 192.0.2.25
|
||||
- 192.0.2.26
|
||||
- 192.0.2.27
|
||||
```
|
||||
|
||||
### {% linkable_title Service `sonos_snapshot` %}
|
||||
|
||||
Take a snapshot of what is currently playing on one or more speakers. This service, and the following one, are useful if you want to play a doorbell or notification sound and resume playback afterwards. If no `entity_id` is provided, all speakers are snapshotted.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | String or list of strings that point at `entity_id`s of coordinator speakers.
|
||||
|
||||
### {% linkable_title Service `sonos_restore` %}
|
||||
|
||||
Restore a previosly taken snapshot of one or more speakers. If no `entity_id` is provided, all speakers are restored.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | String or list of strings that point at `entity_id`s of coordinator speakers.
|
||||
|
||||
### {% linkable_title Service `sonos_group_players` %}
|
||||
|
||||
Group all players together under a single coordinator.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | String or list of a single `entity_id` that will become the coordinator speaker.
|
||||
|
||||
### {% linkable_title Service `sonos_unjoin` %}
|
||||
|
||||
Remove one or more speakers from a group of speakers. If no `entity_id` is provided, all speakers are unjoined.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | String or list of `entity_id`s that will be separated from their coordinator speaker.
|
||||
|
||||
The services are called `sonos_snapshot` and `snapshot_restore`.
|
||||
|
@ -1,52 +0,0 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Google Voice SMS"
|
||||
description: "Instructions how to add user notifications to Home Assistant."
|
||||
date: 2016-01-29
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: google_voice.png
|
||||
ha_category: Notifications
|
||||
---
|
||||
|
||||
[Google Voice](https://www.google.com/voice) is a free service, that allows sending of SMS messages to mobile phones.
|
||||
|
||||
### Configuration
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
notify:
|
||||
platform: googlevoice
|
||||
username: YOUR_GOOGLE_EMAIL
|
||||
password: YOUR_GOOGLE_PASSWORD
|
||||
# Optional
|
||||
name: NOTIFIER_NAME
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **username** (*Required*): Enter your the Google email address you have signed up for Google Voice with. Go to https://www.google.com/voice to setup your Google Voice account.
|
||||
- **password** (*Required*): Enter the password associated with the above email.
|
||||
- **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
|
||||
|
||||
Google Voice 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 devices listed in the notification **target**.
|
||||
|
||||
```yaml
|
||||
# Example automation notification entry
|
||||
automation:
|
||||
- alias: The sun has set
|
||||
trigger:
|
||||
platform: sun
|
||||
event: sunset
|
||||
action:
|
||||
service: notify.googlevoice
|
||||
data:
|
||||
message: 'The sun has set'
|
||||
target:
|
||||
- 5555555555
|
||||
- 5555555556
|
||||
```
|
@ -57,3 +57,30 @@ A simple way to test if you have set up your notify platform correctly is to use
|
||||
"message": "The sun is {% raw %}{% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}{% endraw %}!"
|
||||
}
|
||||
```
|
||||
For services which have support for sending images.
|
||||
|
||||
```json
|
||||
{ "message": "Test plugin",
|
||||
"data": {
|
||||
"photo": {
|
||||
"url": "http://www.gbsun.de/gbpics/berge/berge106.jpg"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If the service support sending the location, the data from this sample can be used.
|
||||
|
||||
```json
|
||||
{ "message": "Test plugin",
|
||||
"data": {
|
||||
"location": {
|
||||
"latitude": 7.3284,
|
||||
"longitude": 46.38234
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
@ -69,11 +69,12 @@ To use notifications, please see the [getting started with automation page](/get
|
||||
### {% linkable_title Photo support %}
|
||||
|
||||
```yaml
|
||||
...
|
||||
action:
|
||||
service: notify.NOTIFIER_NAME
|
||||
data:
|
||||
title: test notify
|
||||
message: That's a exemple
|
||||
title: Send an images
|
||||
message: That's a example that sends an image.
|
||||
data:
|
||||
photo:
|
||||
- url: http://192.168.1.28/camera.jpg
|
||||
@ -90,3 +91,23 @@ action:
|
||||
- **username** (*Optional*): Username for an URL which require HTTP basic authentication.
|
||||
- **password** (*Optional*): Username for an URL which require HTTP basic authentication.
|
||||
|
||||
### {% linkable_title Location support %}
|
||||
|
||||
```yaml
|
||||
...
|
||||
|
||||
action:
|
||||
service: notify.NOTIFIER_NAME
|
||||
data:
|
||||
title: Send location
|
||||
message: Location updated.
|
||||
data:
|
||||
location:
|
||||
latitude: 32.87336
|
||||
longitude: 117.22743
|
||||
```
|
||||
|
||||
- **location** (*Required*): For local or remote path to an image.
|
||||
- **latitude** (*Required*): The latitude to send.
|
||||
- **longitude** (*Required*): The longitude to send.
|
||||
|
||||
|
39
source/_components/panel_iframe.markdown
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Panel iFrame"
|
||||
description: "Instructions how to add iFrames in the frontend of Home Assistant."
|
||||
date: 2015-07-17 18:00
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: home-assistant.png
|
||||
ha_category: Frontend
|
||||
ha_release: 0.25
|
||||
---
|
||||
|
||||
|
||||
The `panel_iframe` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server.
|
||||
|
||||
To enable Panel iFrames in your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
panel_iframe:
|
||||
router:
|
||||
title: 'Router'
|
||||
icon: 'mdi:router-wireless'
|
||||
url: 'http://192.168.1.1'
|
||||
fridge:
|
||||
title: 'Fridge'
|
||||
icon: 'mdi:fridge'
|
||||
url: 'http://192.168.1.5'
|
||||
```
|
||||
|
||||
Configuration variables:
|
||||
|
||||
- **[panel_name]** (*Required*): Name of the panel.
|
||||
- **title** (*Required*): Friendly title for the panel. Will be used in the sidebar.
|
||||
- **icon** (*Optional*): The API token of your bot.
|
||||
- **url** (*Required*): The chat ID of your user.
|
||||
|
@ -41,7 +41,6 @@ Configuration variables:
|
||||
| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` |
|
||||
| PostgreSQL | `postgresql://scott:tiger@SERVER_IP/DB_NAME` |
|
||||
|
||||
|
||||
## {% linkable_title Installation notes %}
|
||||
|
||||
Not all Python bindings for the choosen database engine can be installed directly. This section contains additional details which should help you to get it working.
|
||||
@ -55,4 +54,3 @@ $ sudo apt-get install libmysqlclient-dev
|
||||
$ pip3 install mysqlclient
|
||||
```
|
||||
|
||||
|
||||
|
@ -41,9 +41,8 @@ Configuration variables:
|
||||
- **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.
|
||||
|
||||
##### {% linkable_title Dynamic Configuration %}
|
||||
|
||||
|
||||
### Dynamic Configuration
|
||||
Tracking can be setup to track entities of type device_tracker, zone, and sensor. If an entity is placed in the origin or destination then every 5 minutes when the component updates it will use the latest location of that entity.
|
||||
|
||||
```yaml
|
||||
@ -64,7 +63,8 @@ sensor:
|
||||
destination: Eddies House # Friendly name of a zone
|
||||
```
|
||||
|
||||
#### Entity Tracking
|
||||
#### {% linkable_title Entity Tracking %}
|
||||
|
||||
- **device_tracker**
|
||||
- If state is a zone then the zone location will be used
|
||||
- If state is not a zone it will look for the longitude and latitude attributes
|
||||
|
@ -9,7 +9,6 @@ sharing: true
|
||||
footer: true
|
||||
ha_category: Sensor
|
||||
ha_release: 0.25
|
||||
published: false
|
||||
---
|
||||
|
||||
|
||||
|
@ -62,6 +62,7 @@ sensor:
|
||||
devices:
|
||||
0a52080705020095220269:
|
||||
name: Lving
|
||||
fire_event: True
|
||||
0a520802060100ff0e0269:
|
||||
name: Bath
|
||||
data_type:
|
||||
|
@ -66,4 +66,6 @@ Configuration variables:
|
||||
- **pressure**: The sea-level air pressure in millibars.
|
||||
- **visibility**: The average visibility.
|
||||
|
||||
Details about the API are available in the [Yahoo! EDeveloper Network](https://developer.yahoo.com/weather/).
|
||||
|
||||
Details about the API are available in the [Yahoo! Developer Network](https://developer.yahoo.com/weather/).
|
||||
|
||||
|
@ -1,15 +1,32 @@
|
||||
---
|
||||
layout: page
|
||||
title: "KNX Switch"
|
||||
description: "Instructions how to setup the KNX switches within Home Assistant."
|
||||
date: 2016-07-13 07:00
|
||||
description: "Instructions on how to integrate KXN switches with Home Assistant."
|
||||
date: 2016-06-24 12:00
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: knx.png
|
||||
ha_category: Switch
|
||||
ha_category: DIY
|
||||
ha_release: 0.24
|
||||
---
|
||||
|
||||
To get your KNX switches working with Home Assistant, follow the instructions for the [KNX component](/components/knx/).
|
||||
|
||||
The `knx` switch component is used as in interface to switching actuators.
|
||||
|
||||
To use your KNX switch in your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: knx
|
||||
name: KNX Switch
|
||||
address: 0/0/1
|
||||
state_address: 0/0/3
|
||||
```
|
||||
|
||||
- **name** (*Optional*): A name for this devices used within Home assistant
|
||||
- **address** (*Required*): The KNX group address that is used to turn on/off this actuator channel
|
||||
- **state_address** (*Optional*): Some KNX devices can change their state internally without any messages on the KXN bus, e.g. if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this wil overwrite the state of the switch object.
|
||||
For switching actuators that are only controlled by a single group address and can't change their state internally, you don't have to configrue the state address.
|
||||
|
||||
|
35
source/_components/thermostat.knx.markdown
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
layout: page
|
||||
title: "KNX Thermostat"
|
||||
description: "Instructions on how to integrate KXN thermostats with Home Assistant."
|
||||
date: 2016-06-24 12:00
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
logo: knx.png
|
||||
ha_category: DIY
|
||||
ha_release: 0.25
|
||||
---
|
||||
|
||||
|
||||
The `knx` thermostat platform is used as in interface with KNX thermostats.
|
||||
|
||||
KNX thermostats use at least 2 group addresses: one for the current temperature and one for the target temperature (named set-point in KNX terms).
|
||||
|
||||
To use your KNX thermostats in your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
thermostat:
|
||||
- platform: knx
|
||||
name: KNX Thermostat
|
||||
temperature_address: 0/1/1
|
||||
setpoint_address: 0/1/0
|
||||
```
|
||||
|
||||
- **name** (*Optional*): A name for this devices used within Home assistant
|
||||
- **address** (*Required*): The KNX group address that is used to turn on/off this actuator channel
|
||||
- **temperature_address** (*Required*): The group address that is used to communicate the current temperature. Data format must be datapoint type 9.001 DPT_Value_Temp (2-Octet float value) (see http://www.knx.org/fileadmin/template/documents/downloads_support_menu/KNX_tutor_seminar_page/Advanced_documentation/05_Interworking_E1209.pdf)
|
||||
- **setpoint_address** (*Required*): The group address that is used to set/read the target temperature. Data format must be datapoint type 9.001 DPT_Value_Temp (2-Octet float value). Make sure, you set the read-flag for the thermostat to allow Home Assistant to read the target temperature.
|
||||
|
||||
With the current version of the module, no advanced KNX thermostat functionalities (e.g. HVAC mode) are supported.
|
35
source/_cookbook/custom_panel_using_react.markdown
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Custom Panel using React"
|
||||
description: ""
|
||||
date: 2016-07-29 12:00
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
ha_category: Custom Panel Examples
|
||||
---
|
||||
|
||||
This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC](http://todomvc.com/) but instead of checking off to do items, you are turning lights and switches on/off.
|
||||
|
||||
- It uses React to render the data.
|
||||
- It hooks into Home Assistant JS which means updates pushed from the server are instantly rendered.
|
||||
- It accesses properties made available from Polymer.
|
||||
- It uses the user configuration for the component in the `configuration.yaml` file for rendering.
|
||||
- It allows toggling the sidebar.
|
||||
|
||||
All you need is available as a [custom component](https://github.com/home-assistant/home-assistant/tree/dev/config/custom_components/react_panel).
|
||||
|
||||
Create a entry for the panel in your `configuration.yaml` file to enable it. Set a title if you like.
|
||||
|
||||
```yaml
|
||||
react_panel:
|
||||
title: 'React'
|
||||
```
|
||||
|
||||
This video shows the example in action.
|
||||
|
||||
<div class='videoWrapper'>
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/2200UutdXlo" frameborder="0" allowfullscreen></iframe>
|
||||
</div>
|
||||
|
@ -47,6 +47,7 @@
|
||||
<li>{% active_link /developers/frontend/ Setup Frontend Environment %}</li>
|
||||
<li>{% active_link /developers/frontend_add_card/ Add State Card %}</li>
|
||||
<li>{% active_link /developers/frontend_add_more_info/ Add More Info Dialog %}</li>
|
||||
<li>{% active_link /developers/frontend_creating_custom_panels/ Add Custom Panels %}</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -70,9 +70,15 @@ Quick hot fix after we found a bug in the migrator where it wouldn't work with a
|
||||
[@turbokongen]: https://github.com/turbokongen/
|
||||
[@usul27]: https://github.com/usul27
|
||||
[@w1ll1am23]: https://github.com/w1ll1am23/
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
[@n8henrie]: https://github.com/n8henrie/
|
||||
[@AlucardZero]: https://github.com/AlucardZero/
|
||||
<<<<<<< HEAD
|
||||
>>>>>>> master
|
||||
=======
|
||||
[@Danielhiversen]: https://github.com/danielhiversen
|
||||
>>>>>>> origin/master
|
||||
|
||||
[apcupsd-sensor]: /components/sensor.apcupsd/
|
||||
[Brightness]: /components/light/
|
||||
|
@ -0,0 +1,117 @@
|
||||
---
|
||||
layout: post
|
||||
title: "0.25: Custom frontend panels, Jupyter notebooks, DirecTV."
|
||||
description: "This new release of Home Assistant contains support for iFrame panels."
|
||||
date: 2016-07-30 12:00:00 +0000
|
||||
date_formatted: "July 30, 2016"
|
||||
author: Fabian Affolter & Paulus Schoutsen
|
||||
author_twitter: fabaff
|
||||
comments: true
|
||||
categories: Release-Notes
|
||||
---
|
||||
|
||||
When Home Assistant started the focus has always been on making a great developer experience. Allowing anyone to add support for their favorite devices to Home Assistant easily. This focus has been a great success since we now have 339 components and platforms!
|
||||
|
||||
Starting with this release, we are extending our extensability to the frontend. Starting this release, any component can [add it's own page to the frontend][custom-panels]. Examples of this today are the map, logbook and history. We are looking forward to all the crazy panels you'll come up with!
|
||||
|
||||
We have also seen an exciting trend of people starting to visualize their Internet of Things data using [Jupyter] Notebooks, which are a great way to create and share documents that contain code, visualizations, and explanatory text. In case you missed it, the [blog] post by [@kireyeu] shows an advanced usecase while our [Notebooks][jupyter-notebooks] in the [Home Assistant Notebooks repository][jupyter-repo] cover the basics.
|
||||
|
||||
This release also includes a bunch of new integrations, among others three new media player platforms. This means that today Home Assistant cna talk to 26 different media players!
|
||||
|
||||
The brand-new [iFrame panel component][iframe_panel] allows you to add other websites as pages in the Home Assistant frontend. They will show up in the sidebar and can be used the same way as you open the frontend in your browser but all within one view.
|
||||
|
||||
I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] data ([PEP484]) to the Home Assistant core. This will help us identify issues before they are released.
|
||||
|
||||
<img src='/images/supported_brands/russound.png' style='clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;' width='150' /><img src='/images/supported_brands/jupyter.png' style='clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;' width='150' /><img src='/images/supported_brands/directv.png' style='clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;' width='150' />
|
||||
|
||||
- Frontend: Support for [iFrame panels][iframe_panel] to adding other sites to sidebar ([@balloob])
|
||||
- Allow components to register [custom frontend panels][custom-panels] ([@balloob])
|
||||
- Add example custom_component [react_panel][react-panel] showing custom panels ([@balloob])
|
||||
- Light: [MagicLight/Flux WiFi Color LED Light][flux] support ([@Danielhiversen])
|
||||
- Script: Delay support for [Scripts][script] ([@Teagan42])
|
||||
- Media player: [Russound RNET][Russound] integration ([@laf])
|
||||
- Remote: Option specifying custom timeout when calling Home Assistant API ([@n8henrie])
|
||||
- Thermostat: Integration of [KNX] thermostats ([@open-homeautomation])
|
||||
- Thermostat: Support for HVAC mode of [Nest] devices ([@vladonemo])
|
||||
- InfluxDB: Option to specify additional [tags] ([@open-homeautomation])
|
||||
- Input slider: Support for float value ([@ngraziano])
|
||||
- Template: New [filters] (`timestamp_local` and `timestamp_utc`) ([@fabaff])
|
||||
- Binary sensor - Wink: Water leak sensor support added ([@w1ll1am23])
|
||||
- Sensor - Tellduslive: Support for luminance of Fibaro Motion Sensor ([@PetitCircuitLab])
|
||||
- Switch - RPi GPIO: Fix when inverted logic ([@zeroDenial])
|
||||
- Z-Wave: Rollershutter update ([@turbokongen])
|
||||
- RFXtrx: Fire events when receiving signals from sensors and tests added ([@Danielhiversen])
|
||||
- Core: Add [type][typing] checking using mypy to the core ([@fabianhjr])
|
||||
- Remote: Support for getting the [Configuration] through the Python API ([@fabaff])
|
||||
- Media player: Support for [DirecTV] ([@cbulock])
|
||||
- Use browser timezone for frontend logbook and history dates ([@armills])
|
||||
- Light: New support for [X10] lights ([@fotoetienne])
|
||||
- Sensor: Support for observing [IMAP] accounts ([@danieljkemp])
|
||||
- Media Player: Integration for [MPC-HC] (Media Player Classic - Home Cinema) mediaplayer ([@abcminiuser])
|
||||
- Notify: `location` extension for [Telegram] and photo bug fixed ([@keatontaylor] and [@pvizeli])
|
||||
- Groups: Lock states will now be properly grouped ([@jwl17330536])
|
||||
- Media Player: Added tests for Sonos to improve code quality ([@americanwookie])
|
||||
- Device Tracker: iCloud stability fixes ([@kellerza])
|
||||
- Sensor: Speedtest with improved error handling and state restoring ([@nkgilley])
|
||||
- Recorder: Stability fixes ([@kellerza])
|
||||
- Qwikswitch: Stability fixes ([@kellerza])
|
||||
- Light: [Hyperion] keeps now track of active color ([@schneefux])
|
||||
|
||||
### {% linkable_title Breaking changes %}
|
||||
|
||||
- Google Voice SMS notification support was removed.
|
||||
|
||||
[@nkgilley]: https://github.com/nkgilley
|
||||
[@abcminiuser]: https://github.com/abcminiuser
|
||||
[@americanwookie]: https://github.com/americanwookie
|
||||
[@armills]: https://github.com/armills
|
||||
[@balloob]: https://github.com/balloob
|
||||
[@cbulock]: https://github.com/cbulock
|
||||
[@Danielhiversen]: https://github.com/Danielhiversen
|
||||
[@danieljkemp]: https://github.com/danieljkemp
|
||||
[@fabaff]: https://github.com/fabaff
|
||||
[@fabianhjr]: https://github.com/fabianhjr
|
||||
[@fotoetienne]: https://github.com/fotoetienne
|
||||
[@jwl17330536]: https://github.com/jwl17330536
|
||||
[@keatontaylor]: https://github.com/keatontaylor
|
||||
[@kellerza]: https://github.com/kellerza
|
||||
[@kireyeu]: https://github.com/kireyeu
|
||||
[@laf]: https://github.com/laf
|
||||
[@n8henrie]: https://github.com/n8henrie
|
||||
[@ngraziano]: https://github.com/ngraziano
|
||||
[@open-homeautomation]: https://github.com/open-homeautomation
|
||||
[@PetitCircuitLab]: https://github.com/PetitCircuitLab
|
||||
[@pvizeli]: https://github.com/pvizeli
|
||||
[@schneefux]: https://github.com/schneefux
|
||||
[@Teagan42]: https://github.com/Teagan42
|
||||
[@turbokongen]: https://github.com/turbokongen
|
||||
[@usul27]: https://github.com/usul27
|
||||
[@vladonemo]: https://github.com/vladonemo
|
||||
[@w1ll1am23]: https://github.com/w1ll1am23
|
||||
[@zeroDenial]: https://github.com/zeroDenial
|
||||
|
||||
[custom-panels]: /developers/frontend_creating_custom_panels/
|
||||
[iframe_panel]: /components/panel_iframe/
|
||||
[custom]: /cookbook/custom_panel_using_react/
|
||||
[flux]: /components/light.flux_led/
|
||||
[script]: /getting-started/scripts/#delay
|
||||
[Russound]: /components/media_player.russound_rnet/
|
||||
[tags]: /components/influxdb/
|
||||
[filter]: /topics/templating/
|
||||
[jupyter-notebooks]: /cookbook/#jupyter-notebooks
|
||||
[jupyter-repo]: https://github.com/home-assistant/home-assistant-notebooks
|
||||
[Jupyter]: http://jupyter.org/
|
||||
[blog]: /blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/
|
||||
[DirecTV]: /components/media_player.directv/
|
||||
[Configuration]: /developers/python_api/#get-configuration
|
||||
[X10]: /components/light.x10/
|
||||
[IMAP]: /components/sensor.imap/
|
||||
[typing]: https://docs.python.org/3/library/typing.html
|
||||
[PEP484]: https://www.python.org/dev/peps/pep-0484/
|
||||
[MPC-HC]: /components/media_player.mpchc/
|
||||
[Telegram]: /components/notify.telegram/
|
||||
[react-panel]: /cookbook/custom_panel_using_react/
|
||||
[KNX]: /components/thermostat.knx/
|
||||
[Nest]: /components/thermostat.nest/
|
||||
[filters]: /topics/templating/#home-assistant-template-extensions
|
||||
[Hyperion]: /components/light.hyperion/
|
@ -65,8 +65,6 @@ Home Assistant adds extensions to allow templates to access all of the current s
|
||||
- `states('device_tracker.paulus')` will return the state string (not the object) of the given entity or `unknown` if it doesn't exist.
|
||||
- `is_state('device_tracker.paulus', 'home')` will test if the given entity is specified state.
|
||||
- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity is specified state.
|
||||
- Filter `multiply(x)` will convert the input to a number and multiply it with `x`.
|
||||
- Filter `round(x)` will convert the input to a number and round it to `x` decimals.
|
||||
- `now` will be rendered as current time in your time zone.
|
||||
- `utcnow` will be rendered as UTC time.
|
||||
- `as_timestamp` will convert datetime object or string to UNIX timestamp
|
||||
@ -74,6 +72,10 @@ Home Assistant adds extensions to allow templates to access all of the current s
|
||||
- `closest()` will find the closest entity.
|
||||
- `relative_time(timestamp)` will format the date time as relative time vs now (ie 7 seconds)
|
||||
- `float` will format the output as float.
|
||||
- Filter `multiply(x)` will convert the input to a number and multiply it with `x`.
|
||||
- Filter `round(x)` will convert the input to a number and round it to `x` decimals.
|
||||
- Filter `timestamp_local` will convert an UNIX timestamp to local time/data.
|
||||
- Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data.
|
||||
|
||||
## {% linkable_title Examples %}
|
||||
|
||||
@ -195,4 +197,8 @@ It depends per component or platform but it is common to be able to define a tem
|
||||
# Calculations
|
||||
{% raw %}{{ value_json | multiply(1024) }}{% endraw %}
|
||||
{% raw %}{{ value_json.used | multiply(0.0001) | round(0) }}{% endraw %}
|
||||
|
||||
# Timestamps
|
||||
{% raw %}{{ value_json.tst | timestamp_local }}{% endraw %}
|
||||
{% raw %}{{ value_json.tst | timestamp_utc }}{% endraw %}
|
||||
```
|
||||
|
@ -43,6 +43,7 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [Brad Johnson](https://github.com/bradsk88)
|
||||
- [Brent](https://github.com/bah2830)
|
||||
- [Bruno Adele](https://github.com/badele)
|
||||
- [Cameron Bulock](https://github.com/cbulock)
|
||||
- [Carlo Costanzo](https://github.com/CCOSTAN)
|
||||
- [Charles Spirakis](https://github.com/srcLurker)
|
||||
- [Chris Mulder](https://github.com/chrisvis)
|
||||
@ -50,13 +51,15 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [coteyr](https://github.com/coteyr/)
|
||||
- [Dale Higgs](https://github.com/dale3h)
|
||||
- [Dan Cinnamon](https://github.com/Cinntax)
|
||||
- [Daniel Perna](https://github.com/danielperna84)
|
||||
- [Daniel Høyer Iversen](https://github.com/danielhiversen)
|
||||
- [Daniel J. Kemp](https://github.com/danieljkemp/)
|
||||
- [Daniel Matuschek](https://github.com/usul27)
|
||||
- [Daniel Perna](https://github.com/danielperna84)
|
||||
- [Daniel Zozin](https://github.com/zeroDenial)
|
||||
- [Dan Smith](https://github.com/kk7ds)
|
||||
- [Dan Sullivan](https://github.com/dansullivan86/)
|
||||
- [Daren Lord](https://github.com/Xorso)
|
||||
- [Dean Camera](https://github.com/abcminiuser)
|
||||
- [Dean Galvin](https://github.com/FreekingDean)
|
||||
- [Dennis Karpienski](https://github.com/TheRealLink)
|
||||
- [devdelay](https://github.com/devdelay)
|
||||
@ -65,10 +68,13 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [Eric Rolf](https://github.com/xrolfex)
|
||||
- [ettisan](https://github.com/ettisan)
|
||||
- [Fabian Affolter](https://github.com/fabaff)
|
||||
- [Fabian Heredia Montiel](https://github.com/fabianhjr)
|
||||
- [Felix](https://github.com/xifle)
|
||||
- [Finbarr Brady](https://github.com/fbradyirl)
|
||||
- [Flavio Castelli](https://github.com/flavio)
|
||||
- [Florian Holzapfel](https://github.com/florianholzapfel)
|
||||
- [fotoetienne](https://github.com/fotoetienne)
|
||||
- [Fredrik Haglund](https://github.com/PetitCircuitLab)
|
||||
- [GadgetReactor](https://github.com/GadgetReactor)
|
||||
- [Geoff Norton](https://github.com/kangaroo)
|
||||
- [goir](https://github.com/goir)
|
||||
@ -94,6 +100,7 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [Joel Asher Friedman](https://github.com/joelash)
|
||||
- [Joe McMonagle](https://github.com/joemcmonagle)
|
||||
- [John Arild Berentsen](https://github.com/turbokongen)
|
||||
- [John Lindley](https://github.com/jwl17330536)
|
||||
- [John McLaughlin](https://github.com/loghound)
|
||||
- [John Williams](https://github.com/Jaidan)
|
||||
- [Jon Maddox](https://github.com/maddox)
|
||||
@ -107,13 +114,13 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [Karen Goode](https://github.com/kfgoode)
|
||||
- [Keaton Taylor](https://github.com/keatontaylor)
|
||||
- [kennedyshead](https://github.com/kennedyshead)
|
||||
- [kireyeu](https://github.com/kireyeu)
|
||||
- [kixam](https://github.com/kixam)
|
||||
- [Kyle Hendricks](https://github.com/kylehendricks)
|
||||
- [Lewis Juggins](https://github.com/lwis/)
|
||||
- [Luca Soldi](https://github.com/LucaSoldi)
|
||||
- [Lukas Hetzenecker](https://github.com/lukas-hetzenecker)
|
||||
- [Magnus Knutas](https://github.com/MagnusKnutas)
|
||||
- [MakeMeASandwich](https://github.com/MakeMeASandwich)
|
||||
- [Malte Deiseroth](https://github.com/deisi)
|
||||
- [Manoj](https://github.com/vmulpuru)
|
||||
- [Markus Peter](https://github.com/bimbar)
|
||||
@ -128,11 +135,14 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [miniconfig](https://github.com/miniconfig)
|
||||
- [molobrakos](https://github.com/molobrakos)
|
||||
- [Moon Shot](https://github.com/moonshot)
|
||||
- [Nathan Henrie](https://github.com/n8henrie)
|
||||
- [Nick Touran](https://github.com/partofthething)
|
||||
- [Nick Waring](https://github.com/nickwaring)
|
||||
- [Nicolas Graziano](https://github.com/ngraziano)
|
||||
- [Nils Uliczka](https://github.com/darookee)
|
||||
- [Nolan Gilley](https://github.com/nkgilley)
|
||||
- [Oliver van Porten](https://github.com/mcdeck)
|
||||
- [open-homeautomation](https://github.com/open-homeautomation)
|
||||
- [Øystein Hansen](https://github.com/oeysteinhansen)
|
||||
- [Pascal Bach](https://github.com/bachp)
|
||||
- [Pascal Vizeli](https://github.com/pvizeli)
|
||||
@ -151,6 +161,8 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [Ryan Kraus](https://github.com/rmkraus)
|
||||
- [Ryan Turner](https://github.com/ryanturner)
|
||||
- [sander76](https://github.com/sander76)
|
||||
- [schneefux](https://github.com/schneefux)
|
||||
- [Scott O'Neil](https://github.com/americanwookie)
|
||||
- [Sean Dague](https://github.com/sdague)
|
||||
- [sfam](https://github.com/sfam)
|
||||
- [Stefan Jonasson](https://github.com/stefan-jonasson)
|
||||
@ -165,6 +177,7 @@ This page contains a list of people who have contributed in one way or another t
|
||||
- [Tom Duijf](https://github.com/tomduijf)
|
||||
- [trollkarlen](https://github.com/trollkarlen)
|
||||
- [vitorespindola](https://github.com/vitorespindola)
|
||||
- [vladonemo](https://github.com/vladonemo)
|
||||
- [Warren Konkel](https://github.com/wkonkel)
|
||||
- [William Scanlon](https://github.com/w1ll1am23)
|
||||
- [wind-rider](https://github.com/wind-rider)
|
||||
|
@ -39,19 +39,18 @@ $ script/setup
|
||||
|
||||
## {% linkable_title Development %}
|
||||
|
||||
While you are developing, you need to have webpack running to have your JavaScript changes be made available.
|
||||
While you are developing, you need to have Rollup running to have your JavaScript changes be made available.
|
||||
|
||||
```bash
|
||||
$ cd homeassistant/components/frontend/www_static/home-assistant-polymer
|
||||
$ npm run js_dev
|
||||
```
|
||||
|
||||
The source code for the frontend can be found in two different directories:
|
||||
The source code for the frontend can be found in three different directories:
|
||||
|
||||
- UI: `homeassistant/components/frontend/www_static/home-assistant-polymer/src/`
|
||||
- Core: `homeassistant/components/frontend/www_static/home-assistant-polymer/node_modules/home-assistant-js/src/`
|
||||
|
||||
After your changes have been accepted into the home-assistant-js repository, you'll have to update Home Assistant Polymer to use the latest version of it. This can be done by updating `package.json`. Look for the line that contains home-assistant-js and update the SHA to the SHA of the last commit.
|
||||
- Core: `homeassistant/components/frontend/www_static/home-assistant-polymer/home-assistant-js/src/`
|
||||
- Panels: `homeassistant/components/frontend/www_static/home-assistant-polymer/panels/`
|
||||
|
||||
# {% linkable_title Building the Polymer frontend %}
|
||||
|
||||
@ -59,15 +58,10 @@ Building a new version of the frontend is as simple as running `script/build_fro
|
||||
|
||||
* **home-assistant-polymer**: Install NPM dependencies.
|
||||
* **home-assistant-polymer**: start frontend build.
|
||||
* Compile all used JavaScript to `_app_compiled.js`.
|
||||
* Compile all used JavaScript.
|
||||
* Install Bower dependencies.
|
||||
* Vulcanize all Webcomponents to `frontend.vulcan.html`.
|
||||
* Minify `frontend.vulcan.html` and save it as `frontend.html`.
|
||||
* Vulcanize and minify the core and panel sources to build dir.
|
||||
* Copy the webcomponents polyfill `webcomponents-lite.min.js` from **home-assistant-polymer** to `components/frontend/www_static/webcomponents-lite.min.js`.
|
||||
* Copy the final frontend build `frontend.html` from **home-assistant-polymer** to `components/frontend/www_static/frontend/`.
|
||||
* Generate MD5 hash of `frontend.html` to signal caches to redownload the UI.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/frontend/polymer-build-architecture.png' alt='Polymer build architecture diagram' />
|
||||
Polymer build architecture diagram
|
||||
</p>
|
||||
* Copy the final frontend build `frontend.html` and panel sources from **home-assistant-polymer** to `components/frontend/www_static/frontend/`.
|
||||
* Generate MD5 hashes of core and panel sources.
|
||||
* Create gzip versions of all the sources.
|
||||
|
@ -19,11 +19,10 @@ Sensors, when not [grouped](/components/group/), are shown as so-called badges o
|
||||
|
||||

|
||||
|
||||
The different badges are located in the file [`/src/components/entity/ha-state-label-badge.js`](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/components/entity/ha-state-label-badge.js).
|
||||
The different badges are located in the file [`/src/components/entity/ha-state-label-badge.html`](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/components/entity/ha-state-label-badge.html).
|
||||
|
||||
Adding a custom card type can be done with a few simple steps. For this example we will add a new state card for the domain `camera`:
|
||||
|
||||
1. Add `'camera'` to the array `DOMAINS_WITH_CARD` in the file [/util/state-card-type.js](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/util/state-card-type.js#L3-L4).
|
||||
2. Create the files `state-card-camera.html` and `state-card-camera.js` in the folder [/state-summary/](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/state-summary).
|
||||
3. Add `require('./state-card-camera')` to [state-card-content.js](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/state-summary/state-card-content.js).
|
||||
4. Add `<link rel="import" href="state-card-camera.html">` to [state-card-content.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/state-summary/state-card-content.html).
|
||||
1. Add `'camera'` to the array `DOMAINS_WITH_CARD` in the file [/util/hass-util.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/util/hass-util.html#L11).
|
||||
2. Create the files `state-card-camera.html` in the folder [/state-summary/](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/state-summary).
|
||||
4. Add `<link rel="import" href="state-card-camera.html">` to [state-card-content.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/state-summary/state-card-content.html).
|
||||
|
@ -18,7 +18,6 @@ Whenever the user taps or clicks on one of the cards, a more info dialog will sh
|
||||
|
||||
The instructions to add a more info dialog are very similar to adding a new card type. This example will add a new more info component for the domain `camera`:
|
||||
|
||||
1. Add `'camera'` to the array `DOMAINS_WITH_MORE_INFO` in the file [util/state-more-info-type.js](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/util/state-more-info-type.js#L1).
|
||||
2. Create the files `more-info-camera.html` and `more-info-camera.js` in the folder [/more-infos](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/more-infos).
|
||||
3. Add `require('./more-info-camera')` to [more-info-content.js](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/more-infos/more-info-content.js)
|
||||
1. Add `'camera'` to the array `DOMAINS_WITH_MORE_INFO` in the file [util/hass-util.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/util/hass-util.html#L24).
|
||||
2. Create the files `more-info-camera.html` in the folder [/more-infos](https://github.com/home-assistant/home-assistant-polymer/tree/master/src/more-infos).
|
||||
4. Add `<link rel="import" href="more-info-camera.html">` to [more-info-content.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/more-infos/more-info-content.html)
|
||||
|
94
source/developers/frontend_creating_custom_panels.markdown
Normal file
@ -0,0 +1,94 @@
|
||||
---
|
||||
layout: page
|
||||
title: "Creating custom panels"
|
||||
description: "Introduction to create custom panels for Home Assistant."
|
||||
date: 2016-07-29 13:00
|
||||
sidebar: true
|
||||
comments: false
|
||||
sharing: true
|
||||
footer: true
|
||||
---
|
||||
|
||||
Any component has the possibility to add a panel to the frontend. Panels will be rendered full screen and have real-time access to the Home Assistant object via JavaScript. Examples of this in the app are map, logbook and history.
|
||||
|
||||
Adding a custom panel to your component is easy. For this example we're assuming your component is in `hello_panel.py`. Start by converting your panel to a folder. Create a folder called `hello_panel` and move `hello_panel.py` to `hello_panel/__init__.py`. In that same folder, create a file `panel.html`.
|
||||
|
||||
Your component should register the panel. The minimum required code for your component is:
|
||||
|
||||
```python
|
||||
"""A minimal custom panel example."""
|
||||
import os
|
||||
|
||||
from homeassistant.components.frontend import register_panel
|
||||
|
||||
DOMAIN = 'hello_panel'
|
||||
DEPENDENCIES = ['frontend']
|
||||
|
||||
PANEL_PATH = os.path.join(os.path.dirname(__file__), 'panel.html')
|
||||
|
||||
|
||||
def setup(hass, config):
|
||||
"""Initialize a minimal custom panel."""
|
||||
register_panel(hass, 'hello', PANEL_PATH, title='Hello World',
|
||||
icon='mdi:appnet', config=config.get(DOMAIN, {}))
|
||||
return True
|
||||
```
|
||||
|
||||
The `panel.html` contains the needed building blocks to create the elements inside the view.
|
||||
|
||||
```javascript
|
||||
<dom-module id='ha-panel-hello'>
|
||||
<template>
|
||||
<style>
|
||||
p {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<p>Hello {% raw %}{{who}}{% endraw %}. Greetings from Home Assistant.</p>
|
||||
</template>
|
||||
</dom-module>
|
||||
|
||||
</script>
|
||||
Polymer({
|
||||
is: 'ha-panel-hello',
|
||||
properties: {
|
||||
// Home Assistant object
|
||||
hass: {
|
||||
type: Object,
|
||||
},
|
||||
// If should render in narrow mode
|
||||
narrow: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
// If sidebar is currently shown
|
||||
showMenu: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
// Home Assistant panel info
|
||||
// panel.config contains config passed to register_panel serverside
|
||||
panel: {
|
||||
type: Object,
|
||||
},
|
||||
who: {
|
||||
type: String,
|
||||
computed: 'computeWho(panel)',
|
||||
}
|
||||
},
|
||||
|
||||
computeWho: function (panel) {
|
||||
return panel && panel.config && panel.config.who ? panel.config.who : 'World';
|
||||
},
|
||||
});
|
||||
</script>
|
||||
```
|
||||
|
||||
Create an entry for the new panel in your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
hello_panel:
|
||||
who: 'You'
|
||||
```
|
||||
|
||||
For more examples, see the [Custom panel Examples](/cookbook#custom-panel-examples) on our examples page.
|
@ -9,7 +9,7 @@ sharing: true
|
||||
footer: true
|
||||
---
|
||||
|
||||
Home Assistant supports running multiple synchronized instances using a master-slave model. Whenever `events.fire` or `states.set` is called on the salve it will forward it to the master. The master will replicate all events and changed states to its slaves.
|
||||
Home Assistant supports running multiple synchronized instances using a master-slave model. Whenever `events.fire` or `states.set` is called on the slave it will forward it to the master. The master will replicate all events and changed states to its slaves.
|
||||
|
||||
<p class='img'>
|
||||
<a href='/images/architecture/architecture-remote.png'>
|
||||
|
@ -33,6 +33,18 @@ hass.start()
|
||||
living_room = hass.states.get('group.living_room')
|
||||
```
|
||||
|
||||
### {% linkable_title Get configuration %}
|
||||
|
||||
Get the current configuration of a Home Asssitant instance.
|
||||
|
||||
```python
|
||||
import homeassistant.remote as remote
|
||||
|
||||
api = remote.API('127.1.0.1', 'password')
|
||||
|
||||
print(remote.get_config(api))
|
||||
```
|
||||
|
||||
### {% linkable_title Get details about services, events, and entitites %}
|
||||
|
||||
Similar to the output in the "Developer Tools" of the frontend.
|
||||
@ -142,6 +154,30 @@ time.sleep(5)
|
||||
remote.call_service(api, domain, 'turn_off', {'entity_id': '{}'.format(switch_name)})
|
||||
```
|
||||
|
||||
### {% linkable_title Specify a timeout %}
|
||||
|
||||
The default timeout for an API call with `call_service` is 5 seconds. Service
|
||||
taking longer than this to return will raise
|
||||
`homeassistant.exceptions.HomeAssistantError: Timeout` unless provided with a
|
||||
longer timeout.
|
||||
|
||||
```python
|
||||
import homeassistant.remote as remote
|
||||
|
||||
api = remote.API('host', 'password')
|
||||
domain = 'switch'
|
||||
|
||||
# Assuming switch.timeout_switch takes 10 seconds to return
|
||||
switch_name = 'switch.timeout_switch'
|
||||
|
||||
# Raises homeassistant.exceptions.HomeAssistantError: Timeout when talking to
|
||||
remote.call_service(api, domain, 'turn_on', {'entity_id': switch_name})
|
||||
|
||||
# Runs withous exception
|
||||
remote.call_service(api, domain, 'turn_on', {'entity_id': switch_name},
|
||||
timeout=11)
|
||||
```
|
||||
|
||||
### {% linkable_title Send a notification %}
|
||||
|
||||
The example uses the jabber notification platform to send a single message to the given recipient in the `configuration.yaml` file.
|
||||
|
@ -111,11 +111,12 @@ The template condition will test if the [given template][template] renders a val
|
||||
|
||||
```yaml
|
||||
condition: template
|
||||
value_template: '{% raw %}{{ state.attributes.battery > 50 }}{% endraw %}'
|
||||
value_template: '{% raw %}{{ states.device_tracker.iphone.attributes.battery > 50 }}{% endraw %}'
|
||||
```
|
||||
|
||||
Within an automation, template conditions also have access to the `trigger` variable as [described here][automation-templating].
|
||||
|
||||
[template]: /topics/templating/
|
||||
[automation-templating]: /getting-started/automation-templating/
|
||||
|
||||
#### {% linkable_title Time condition %}
|
||||
|
@ -69,6 +69,12 @@ delay:
|
||||
minutes: 1
|
||||
```
|
||||
|
||||
```yaml
|
||||
# Waits however many minutes input_slider.minute_delay is set to
|
||||
# Valid formats include HH:MM and HH:MM:SS
|
||||
delay: {% raw %}'00:{{ input_slider.minute_delay }}:00'{% endraw %}
|
||||
```
|
||||
|
||||
#### {% linkable_title Fire an Event %}
|
||||
|
||||
This action allows you to fire an event. Events can be used for many things. It could trigger an automation or indicate to another component that something is happening. For instance, in the below example it is used to create an entry in the logbook.
|
||||
|
Before Width: | Height: | Size: 25 KiB |
BIN
source/images/screenshots/mpc-hc.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
source/images/supported_brands/directv.png
Normal file
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 28 KiB |
BIN
source/images/supported_brands/jupyter.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
source/images/supported_brands/mpchc.png
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
source/images/supported_brands/russound.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
@ -15,11 +15,11 @@ hide_github_edit: true
|
||||
<div class="grid">
|
||||
<div class="grid__item one-third lap-one-third palm-one-whole">
|
||||
<div class='current-version material-card text'>
|
||||
<h1>Current Version: 0.24.1</h1>
|
||||
Released: <span class='release-date'>July 21, 2016</span>
|
||||
<h1>Current Version: 0.25</h1>
|
||||
Released: <span class='release-date'>July 30, 2016</span>
|
||||
|
||||
<div class='links'>
|
||||
<a href='/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/'>Release notes</a>
|
||||
<a href='/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/'>Release notes</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class='join-community material-card text'>
|
||||
|