From f5b903f5ec8338b89814ec00e3441b8ec71483f2 Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 13 Aug 2016 19:22:59 +0000 Subject: [PATCH] Site updated at 2016-08-13 19:22:59 UTC --- atom.xml | 166 +++----- blog/2014/12/18/website-launched/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- blog/2015/01/13/nest-in-da-house/index.html | 27 +- blog/2015/01/24/release-notes/index.html | 27 +- .../2015/02/08/looking-at-the-past/index.html | 27 +- blog/2015/02/24/streaming-updates/index.html | 27 +- .../index.html | 27 +- blog/2015/03/08/new-logo/index.html | 27 +- blog/2015/03/11/release-notes/index.html | 27 +- blog/2015/03/22/release-notes/index.html | 27 +- blog/2015/04/25/release-notes/index.html | 27 +- .../05/09/utc-time-zone-awareness/index.html | 27 +- blog/2015/05/14/release-notes/index.html | 27 +- blog/2015/06/10/release-notes/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../13/home-assistant-meets-ifttt/index.html | 27 +- .../index.html | 27 +- .../alarm-sonos-and-itunes-support/index.html | 27 +- .../index.html | 27 +- .../index.html | 29 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../11/22/survey-november-2015/index.html | 27 +- .../12/05/community-highlights/index.html | 27 +- .../index.html | 27 +- .../12/07/influxdb-and-grafana/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../01/19/perfect-home-automation/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../multi-room-audio-with-snapcast/index.html | 27 +- .../02/20/community-highlights/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- blog/2016/04/07/static-website/index.html | 27 +- .../index.html | 27 +- .../04/17/updated-documentation/index.html | 27 +- .../04/19/to-infinity-and-beyond/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../05/06/open-iot-summit-talk/index.html | 27 +- .../empowering-scripts-and-alexa/index.html | 27 +- .../index.html | 27 +- blog/2016/05/18/why-we-use-polymer/index.html | 27 +- blog/2016/05/21/release-020/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../06/01/community-highlights/index.html | 27 +- .../08/super-fast-web-enocean-lirc/index.html | 27 +- .../home-assistant-at-pycon-2016/index.html | 27 +- .../index.html | 27 +- .../usb-webcams-and-home-assistant/index.html | 27 +- .../index.html | 27 +- .../index.html | 27 +- .../sqlalchemy-knx-join-simplisafe/index.html | 27 +- .../19/visualizing-your-iot-data/index.html | 27 +- .../index.html | 23 +- .../esp8266-and-micropython-part1/index.html | 27 +- .../index.html | 27 +- .../03/laundry-automation-update/index.html | 27 +- .../index.html | 27 +- .../index.html | 299 +++++++++++++ blog/archives/index.html | 59 ++- blog/categories/community/atom.xml | 2 +- blog/categories/community/index.html | 27 +- blog/categories/device-tracking/atom.xml | 2 +- blog/categories/device-tracking/index.html | 27 +- blog/categories/esp8266/atom.xml | 4 +- blog/categories/esp8266/index.html | 27 +- blog/categories/how-to/atom.xml | 2 +- blog/categories/how-to/index.html | 27 +- blog/categories/ibeacons/atom.xml | 2 +- blog/categories/ibeacons/index.html | 27 +- blog/categories/internet-of-things/atom.xml | 2 +- blog/categories/internet-of-things/index.html | 27 +- blog/categories/iot-data/atom.xml | 2 +- blog/categories/iot-data/index.html | 27 +- blog/categories/mqtt/atom.xml | 4 +- blog/categories/mqtt/index.html | 27 +- blog/categories/organisation/atom.xml | 2 +- blog/categories/organisation/index.html | 27 +- blog/categories/owntracks/atom.xml | 2 +- blog/categories/owntracks/index.html | 27 +- blog/categories/presence-detection/atom.xml | 2 +- blog/categories/presence-detection/index.html | 27 +- .../public-service-announcement/atom.xml | 2 +- .../public-service-announcement/index.html | 27 +- blog/categories/release-notes/atom.xml | 131 +++--- blog/categories/release-notes/index.html | 59 ++- blog/categories/survey/atom.xml | 2 +- blog/categories/survey/index.html | 27 +- blog/categories/talks/atom.xml | 2 +- blog/categories/talks/index.html | 27 +- blog/categories/technology/atom.xml | 2 +- blog/categories/technology/index.html | 27 +- blog/categories/user-stories/atom.xml | 2 +- blog/categories/user-stories/index.html | 27 +- blog/categories/video/atom.xml | 2 +- blog/categories/video/index.html | 27 +- blog/categories/website/atom.xml | 2 +- blog/categories/website/index.html | 27 +- blog/index.html | 140 ++++-- blog/posts/2/index.html | 186 +++----- blog/posts/3/index.html | 228 ++++++---- blog/posts/4/index.html | 156 ++++--- blog/posts/5/index.html | 128 +++--- blog/posts/6/index.html | 124 +++--- blog/posts/7/index.html | 111 ++--- blog/posts/8/index.html | 50 +++ .../alarm_control_panel.verisure/index.html | 18 + components/apcupsd/index.html | 3 + components/arduino/index.html | 3 + components/bloomsky/index.html | 3 + components/browser/index.html | 3 + components/camera.bloomsky/index.html | 3 + components/camera.ffmpeg/index.html | 220 ++++++++++ components/camera.foscam/index.html | 3 + components/camera.generic/index.html | 3 + components/camera.local_file/index.html | 3 + components/camera.mjpeg/index.html | 3 + components/camera.netatmo/index.html | 3 + components/camera.rpi_camera/index.html | 3 + components/camera.uvc/index.html | 3 + components/camera/index.html | 3 + components/configurator/index.html | 3 + components/demo/index.html | 3 + components/device_tracker.locative/index.html | 9 +- components/discovery/index.html | 3 + components/downloader/index.html | 3 + components/ecobee/index.html | 3 + components/enocean/index.html | 3 + components/feedreader/index.html | 3 + components/foursquare/index.html | 258 +++++++++++ components/homematic/index.html | 3 + components/http/index.html | 3 + components/ifttt.manything/index.html | 3 + components/index.html | 138 ++++++ components/influxdb/index.html | 4 + components/insteon_hub/index.html | 3 + components/introduction/index.html | 3 + components/isy994/index.html | 3 + components/joaoapps_join/index.html | 3 + components/knx/index.html | 3 + components/light.blinksticklight/index.html | 3 + components/light.enocean/index.html | 3 + components/light.flux_led/index.html | 3 + components/light.homematic/index.html | 3 + components/light.hue/index.html | 3 + components/light.hyperion/index.html | 3 + components/light.lifx/index.html | 3 + components/light.limitlessled/index.html | 3 + components/light.mqtt/index.html | 3 + components/light.mqtt_json/index.html | 299 +++++++++++++ components/light.mysensors/index.html | 3 + components/light.osramlightify/index.html | 3 + components/light.qwikswitch/index.html | 3 + components/light.rfxtrx/index.html | 3 + components/light.scsgate/index.html | 3 + components/light.tellstick/index.html | 3 + components/light.vera/index.html | 3 + components/light.wemo/index.html | 3 + components/light.wink/index.html | 3 + components/light.x10/index.html | 3 + components/light.zigbee/index.html | 3 + components/light.zwave/index.html | 3 + components/light/index.html | 3 + components/logger/index.html | 3 + components/media_player.mpchc/index.html | 6 + components/modbus/index.html | 3 + components/mqtt/index.html | 3 + components/mqtt_eventstream/index.html | 3 + components/mysensors/index.html | 3 + components/nest/index.html | 32 ++ components/netatmo/index.html | 3 + components/notify.aws_lambda/index.html | 2 +- components/notify.smtp/index.html | 23 + components/octoprint/index.html | 3 + components/panel_custom/index.html | 188 ++++++++ components/panel_iframe/index.html | 3 + components/persistent_notification/index.html | 3 + components/pilight/index.html | 284 ++++++++++++ components/proximity/index.html | 18 + components/qwikswitch/index.html | 3 + components/rfxtrx/index.html | 3 + components/scsgate/index.html | 3 + components/sensor.apcupsd/index.html | 9 + components/sensor.arduino/index.html | 3 + components/sensor.arest/index.html | 9 + components/sensor.bitcoin/index.html | 9 + components/sensor.bloomsky/index.html | 9 + components/sensor.command_line/index.html | 9 + components/sensor.cpuspeed/index.html | 9 + components/sensor.deutsche_bahn/index.html | 9 + components/sensor.dht/index.html | 3 + .../sensor.dte_energy_bridge/index.html | 9 + components/sensor.dweet/index.html | 9 + components/sensor.ecobee/index.html | 9 + components/sensor.efergy/index.html | 9 + components/sensor.eliqonline/index.html | 9 + components/sensor.enocean/index.html | 9 + components/sensor.envisalink/index.html | 9 + components/sensor.fastdotcom/index.html | 388 +++++++++++++++++ components/sensor.fitbit/index.html | 9 + components/sensor.fixer/index.html | 9 + components/sensor.glances/index.html | 9 + .../sensor.google_travel_time/index.html | 9 + components/sensor.gpsd/index.html | 403 ++++++++++++++++++ components/sensor.gtfs/index.html | 9 + components/sensor.homematic/index.html | 9 + components/sensor.http/index.html | 9 + components/sensor.imap/index.html | 9 + components/sensor.lastfm/index.html | 9 + components/sensor.loop_energy/index.html | 9 + components/sensor.mfi/index.html | 9 + components/sensor.modbus/index.html | 9 + components/sensor.moldindicator/index.html | 9 + components/sensor.mqtt/index.html | 9 + components/sensor.mysensors/index.html | 9 + components/sensor.nest/index.html | 9 + components/sensor.neurio_energy/index.html | 9 + components/sensor.nzbget/index.html | 9 + components/sensor.octoprint/index.html | 9 + components/sensor.ohmconnect/index.html | 377 ++++++++++++++++ components/sensor.onewire/index.html | 9 + .../sensor.openexchangerates/index.html | 9 + components/sensor.plex/index.html | 9 + components/sensor.rest/index.html | 9 + components/sensor.rfxtrx/index.html | 9 + components/sensor.sabnzbd/index.html | 9 + components/sensor.serial_pm/index.html | 214 ++++++++++ components/sensor.snmp/index.html | 9 + components/sensor.speedtest/index.html | 9 + components/sensor.steam_online/index.html | 9 + components/sensor.supervisord/index.html | 9 + .../sensor.swiss_hydrological_data/index.html | 9 + .../sensor.swiss_public_transport/index.html | 9 + components/sensor.systemmonitor/index.html | 9 + components/sensor.tcp/index.html | 9 + components/sensor.tellduslive/index.html | 9 + components/sensor.tellstick/index.html | 9 + components/sensor.temper/index.html | 9 + components/sensor.template/index.html | 9 + components/sensor.thinkingcleaner/index.html | 9 + components/sensor.time_date/index.html | 9 + components/sensor.torque/index.html | 9 + components/sensor.transmission/index.html | 9 + components/sensor.twitch/index.html | 9 + components/sensor.uber/index.html | 9 + components/sensor.vera/index.html | 9 + components/sensor.verisure/index.html | 9 + components/sensor.wink/index.html | 9 + components/sensor.worldclock/index.html | 9 + components/sensor.zigbee/index.html | 9 + components/sensor.zwave/index.html | 9 + components/sensor/index.html | 12 + components/switch.acer_projector/index.html | 3 + components/switch.arduino/index.html | 3 + components/switch.arest/index.html | 3 + components/switch.command_line/index.html | 3 + components/switch.dlink/index.html | 3 + components/switch.edimax/index.html | 3 + components/switch.enocean/index.html | 3 + components/switch.flux/index.html | 5 + components/switch.hikvision/index.html | 3 + components/switch.homematic/index.html | 3 + components/switch.knx/index.html | 3 + components/switch.mfi/index.html | 3 + components/switch.modbus/index.html | 3 + components/switch.mqtt/index.html | 3 + components/switch.mysensors/index.html | 3 + components/switch.mystrom/index.html | 3 + components/switch.orvibo/index.html | 3 + components/switch.pilight/index.html | 331 ++++++++++++++ .../switch.pulseaudio_loopback/index.html | 3 + components/switch.qwikswitch/index.html | 3 + components/switch.rest/index.html | 3 + components/switch.rfxtrx/index.html | 3 + components/switch.rpi_gpio/index.html | 3 + components/switch.rpi_rf/index.html | 3 + components/switch.scsgate/index.html | 3 + components/switch.tellduslive/index.html | 3 + components/switch.tellstick/index.html | 3 + components/switch.template/index.html | 3 + components/switch.thinkingcleaner/index.html | 3 + components/switch.tplink/index.html | 3 + components/switch.transmission/index.html | 3 + components/switch.vera/index.html | 3 + components/switch.verisure/index.html | 3 + components/switch.wake_on_lan/index.html | 3 + components/switch.wemo/index.html | 3 + components/switch.wink/index.html | 3 + components/switch.zigbee/index.html | 3 + components/switch.zwave/index.html | 3 + components/switch/index.html | 3 + components/tellduslive/index.html | 3 + components/tellstick/index.html | 3 + components/thermostat.heat_control/index.html | 9 + components/thermostat.knx/index.html | 3 + components/thermostat.proliphix/index.html | 7 +- components/updater/index.html | 3 + components/upnp/index.html | 3 + components/vera/index.html | 3 + components/verisure/index.html | 3 + components/weblink/index.html | 3 + components/wemo/index.html | 3 + components/wink/index.html | 3 + components/zeroconf/index.html | 3 + components/zigbee/index.html | 3 + components/zwave/index.html | 3 + .../index.html | 4 +- cookbook/custom_panel_using_react/index.html | 13 +- developers/credits/index.html | 13 +- .../index.html | 35 +- developers/rest_api/index.html | 2 +- getting-started/basic/index.html | 4 +- getting-started/z-wave-controllers/index.html | 6 + .../z-wave-device-specific/index.html | 38 -- getting-started/z-wave/index.html | 88 +++- images/supported_brands/fastdotcom.png | Bin 0 -> 17929 bytes images/supported_brands/ffmpeg.png | Bin 0 -> 17973 bytes images/supported_brands/foursquare.png | Bin 0 -> 45770 bytes images/supported_brands/gpsd.png | Bin 0 -> 16518 bytes images/supported_brands/ohmconnect.png | Bin 0 -> 3160 bytes images/supported_brands/pilight.png | Bin 0 -> 18482 bytes index.html | 16 +- sitemap.xml | 67 ++- topics/platform_options/index.html | 27 +- topics/secrets/index.html | 33 +- topics/splitting_configuration/index.html | 4 +- topics/templating/index.html | 23 +- 347 files changed, 6259 insertions(+), 2708 deletions(-) create mode 100644 blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html create mode 100644 components/camera.ffmpeg/index.html create mode 100644 components/foursquare/index.html create mode 100644 components/light.mqtt_json/index.html create mode 100644 components/panel_custom/index.html create mode 100644 components/pilight/index.html create mode 100644 components/sensor.fastdotcom/index.html create mode 100644 components/sensor.gpsd/index.html create mode 100644 components/sensor.ohmconnect/index.html create mode 100644 components/sensor.serial_pm/index.html create mode 100644 components/switch.pilight/index.html create mode 100644 images/supported_brands/fastdotcom.png create mode 100644 images/supported_brands/ffmpeg.png create mode 100644 images/supported_brands/foursquare.png create mode 100644 images/supported_brands/gpsd.png create mode 100644 images/supported_brands/ohmconnect.png create mode 100644 images/supported_brands/pilight.png diff --git a/atom.xml b/atom.xml index c538f5477c..1cf5c717a5 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ @@ -13,6 +13,65 @@ Octopress + + <![CDATA[0.26: Foursquare, Fast.com, FFMPEG and GPSD]]> + + 2016-08-13T19:00:00+00:00 + https://home-assistant.io/blog/2016/08/13/foursquare--fast.com--ffmpeg--gpsd + It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

+ +

This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

+ +

+ + + +

Breaking changes

+ +
    +
  • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
  • +
+ +
+
# Configuration.yaml example
+homeassistant:
+  # 'metric' for the metric system, 'imperial' for the imperial system
+  unit_system: metric
+
+
+
+ +]]>
+
+ <![CDATA[Optimizing the Home Assistant mobile web app]]> @@ -1542,111 +1601,6 @@ target_dir /tmp
-]]> -
- - - <![CDATA[0.19: Empowering scripts and Alexa]]> - - 2016-05-07T18:06:00+00:00 - https://home-assistant.io/blog/2016/05/07/empowering-scripts-and-alexa - This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic.

- -

Scripts are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including from_state !). Passing data to script entities is available by passing the data to the script services.

- -
-
automation:
-  trigger:
-    platform: mqtt
-    topic: some/notify/topic
-  action:
-    service: notify.notify
-    data_template:
-      message: 
-
-automation 2:
-  trigger:
-    platform: state
-    entity_id: light.hue
-  action:
-    service: notify.notify
-    data_template:
-      message:  is now 
-
-
-
- -

Entity Namespaces allow you to influence the entity ids for a specific platform. For example you can turn light.living_room into light.holiday_home_living_room with the following config:

- -
-
light:
-  platform: hue
-  entity_namespace: holiday_home
-
-
-
- - - -

Deprecations

-
    -
  • Conditions in automations should now specify which condition to use with condition: instead of platform:. For example condition: state.
  • -
  • RFXtrx has a new config format.
  • -
- -

Old RFXtrx config format:

- -
-
  devices:
-    123efab1:
-      name: My DI.0 light device
-      packetid: 1b2200000890efab1213f60
-
-
-
- -

New RFXtrx config format:

- -
-
  devices:
-    1b2200000890efab1213f60:
-      name: My DI.0 light device
-
-
-
]]>
diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index c1f6cafc82..d0a478ce51 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -137,7 +137,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html index ff6c378c76..bee8d95171 100644 --- a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html +++ b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html @@ -192,7 +192,9 @@ This article will try to explain how they all relate.

  • +
    + -

    Recent Posts

    diff --git a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html index 45cc797a7f..7af55f9103 100644 --- a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html +++ b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html @@ -176,7 +176,9 @@ api_key=ABCDEFGHJKLMNOPQRSTUVXYZ
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html index 8695afefdf..4de19b9e7f 100644 --- a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html +++ b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html @@ -151,7 +151,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/01/13/nest-in-da-house/index.html b/blog/2015/01/13/nest-in-da-house/index.html index 280de57081..4d9f76b2a9 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -154,7 +154,9 @@ password=YOUR_PASSWORD
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index cffec8b8ef..d469e5cd84 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -160,7 +160,9 @@ Home Assistant now supports --open-ui and --demo-mode
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/02/08/looking-at-the-past/index.html b/blog/2015/02/08/looking-at-the-past/index.html index 949a49e81d..e2ac75fe1a 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -168,7 +168,9 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html index d73edbf03e..19ddf06400 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -153,7 +153,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html index ead0393b97..1fe88e48de 100644 --- a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html +++ b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html @@ -143,7 +143,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index 7c53175158..6800b73540 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -144,7 +144,9 @@ The old logo, the new detailed logo and the new simple logo.
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html index e15243b0f5..d229113050 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -183,7 +183,9 @@ An initial version of voice control for Home Assistant has landed. The current i
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html index 07a26dd943..35f9b068f6 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -220,7 +220,9 @@ I (Paulus) have contributed a scene component. A user can create scenes that cap
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/04/25/release-notes/index.html b/blog/2015/04/25/release-notes/index.html index dd8e7a4614..6e560c2092 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -231,7 +231,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/05/09/utc-time-zone-awareness/index.html b/blog/2015/05/09/utc-time-zone-awareness/index.html index a7f073874d..1f0926af8c 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -166,7 +166,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index 2ddf4cdfc2..a51e17d643 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -258,7 +258,9 @@ Before diving into the newly supported devices and services, I want to highlight
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html index a005a90992..6513be379a 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -311,7 +311,9 @@ This switch platform allows you to control your motion detection setting on your
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html index ab272f6311..ff7b8b5100 100644 --- a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html +++ b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html @@ -263,7 +263,9 @@ Fabian has added support for Forecast.io to g
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html index a28fce05af..dd0f979f16 100644 --- a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html +++ b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html @@ -252,7 +252,9 @@ Support for Temper temperature sensors has been contributed by +
    +
    +
    + -

    Recent Posts

    diff --git a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html index 684e724edd..2f902f8c0d 100644 --- a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html +++ b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html @@ -275,7 +275,9 @@ The automation and script syntax here is using a deprecated and no longer suppor
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html index 3e31233701..113f860002 100644 --- a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html +++ b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html @@ -249,7 +249,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html index 9a6604df1b..744890f935 100644 --- a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html +++ b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html @@ -452,7 +452,9 @@ PubSubClient client(ethClient);
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/09/13/home-assistant-meets-ifttt/index.html b/blog/2015/09/13/home-assistant-meets-ifttt/index.html index 38f4cd37f9..39892aeb3a 100644 --- a/blog/2015/09/13/home-assistant-meets-ifttt/index.html +++ b/blog/2015/09/13/home-assistant-meets-ifttt/index.html @@ -311,7 +311,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html index 8ba0ddbf8c..f065b211a4 100644 --- a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html +++ b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html @@ -212,7 +212,9 @@ Glances web server started on http://0.0.0.0:61208/
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html index ec9a84c63c..3fc6783ca8 100644 --- a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html +++ b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html @@ -191,7 +191,9 @@ Automation has gotten a lot of love. It now supports conditions, multiple trigge
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html index d6532e97ee..1eecffefd7 100644 --- a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html +++ b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html @@ -167,7 +167,9 @@ Map in Home Assistant showing two people and three zones (home, school, work)
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html index 979d2d0560..dd429299f9 100644 --- a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html +++ b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html @@ -202,7 +202,7 @@ Home Assistant will keep track of historical values and allow you to integrate i
  • Open Arduino IDE and create a new sketch (File -> New)
  • Copy and paste the below sketch to the Arduino IDE
  • Adjust the values line 6 - 14 to match your setup
  • -
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.
  • +
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 62.
  • To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode.
  • Press the upload button in Arduino IDE
  • Open the serial monitor (Tools -> Serial Monitor) to see the output from your device
  • @@ -511,7 +511,9 @@ Adafruit_HDC1000 hdc = Adafruit_HDC1000();
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html index c33f730cfd..c3426b6689 100644 --- a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html +++ b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html @@ -156,7 +156,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html index 23ba450e58..64bfb2af5c 100644 --- a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html +++ b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html @@ -178,7 +178,9 @@ This makes more sense as most people run Home Assistant as a daemon

  • +
    + -

    Recent Posts

    diff --git a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html index 8418a9836a..f302d3b9d3 100644 --- a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html +++ b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html @@ -174,7 +174,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/11/22/survey-november-2015/index.html b/blog/2015/11/22/survey-november-2015/index.html index 9648cf42d3..c478d15ffa 100644 --- a/blog/2015/11/22/survey-november-2015/index.html +++ b/blog/2015/11/22/survey-november-2015/index.html @@ -214,7 +214,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/12/05/community-highlights/index.html b/blog/2015/12/05/community-highlights/index.html index 5dfe8bbd4a..77ee54f6e2 100644 --- a/blog/2015/12/05/community-highlights/index.html +++ b/blog/2015/12/05/community-highlights/index.html @@ -149,7 +149,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html index 6aa40ce573..4968b14005 100644 --- a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html +++ b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html @@ -156,7 +156,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/12/07/influxdb-and-grafana/index.html b/blog/2015/12/07/influxdb-and-grafana/index.html index 75a4d8cc78..2199eb127a 100644 --- a/blog/2015/12/07/influxdb-and-grafana/index.html +++ b/blog/2015/12/07/influxdb-and-grafana/index.html @@ -247,7 +247,9 @@ $ sudo systemctl status grafana-server
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html index 1bb0d9b809..2493089e2d 100644 --- a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html +++ b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html @@ -197,7 +197,9 @@ requests.get(' +
    + +
    + -

    Recent Posts

    diff --git a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html index d540efe446..6abce6a4a2 100644 --- a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html +++ b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html @@ -236,7 +236,9 @@ sudo docker run -it --rm -p 80:80 --name certbot \
  • +
    + -

    Recent Posts

    diff --git a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html index 01308b3cc7..29a5b8bf29 100644 --- a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html +++ b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html @@ -190,7 +190,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/01/17/extended-support-for-diy-solutions/index.html b/blog/2016/01/17/extended-support-for-diy-solutions/index.html index b6362ff165..ef63a032a6 100644 --- a/blog/2016/01/17/extended-support-for-diy-solutions/index.html +++ b/blog/2016/01/17/extended-support-for-diy-solutions/index.html @@ -170,7 +170,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/01/19/perfect-home-automation/index.html b/blog/2016/01/19/perfect-home-automation/index.html index a74018f6aa..cf95b72b65 100644 --- a/blog/2016/01/19/perfect-home-automation/index.html +++ b/blog/2016/01/19/perfect-home-automation/index.html @@ -174,7 +174,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html index 0eebbea094..f1d9d9fa36 100644 --- a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html +++ b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html @@ -176,7 +176,9 @@ Example of the new views in the frontend. Learn mor
  • +
    +
    -

    Recent Posts

    diff --git a/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html b/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html index b0f49e87b8..818b2e4200 100644 --- a/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html +++ b/blog/2016/02/09/smarter-smart-things-with-mqtt-and-home-assistant/index.html @@ -363,7 +363,9 @@ Z-Wave light bulb |
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/02/12/classifying-the-internet-of-things/index.html b/blog/2016/02/12/classifying-the-internet-of-things/index.html index 6776c88432..e70c4aa6e6 100644 --- a/blog/2016/02/12/classifying-the-internet-of-things/index.html +++ b/blog/2016/02/12/classifying-the-internet-of-things/index.html @@ -313,7 +313,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html index f29ebb5081..a134420e43 100644 --- a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html +++ b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html @@ -179,7 +179,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html index 9de311d06f..c0a57519ec 100644 --- a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html +++ b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html @@ -281,7 +281,9 @@ output = audioresample ! audio/x-raw,rate=48000,channels=2,format=S16LE ! audioc
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/02/20/community-highlights/index.html b/blog/2016/02/20/community-highlights/index.html index fabf2f0483..d31e791070 100644 --- a/blog/2016/02/20/community-highlights/index.html +++ b/blog/2016/02/20/community-highlights/index.html @@ -189,7 +189,9 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm.
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html index bf631b6b9f..85745f1f31 100644 --- a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html +++ b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html @@ -178,7 +178,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html index 5c373b6772..c939af029e 100644 --- a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html +++ b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html @@ -184,7 +184,9 @@ player state attributes. This change affects automations, scripts and scenes.
    +
    + +
    + -

    Recent Posts

    diff --git a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html index c9ad39a47d..ac8fa4872b 100644 --- a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html +++ b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html @@ -147,7 +147,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/04/07/static-website/index.html b/blog/2016/04/07/static-website/index.html index 74657355e8..839b07fad7 100644 --- a/blog/2016/04/07/static-website/index.html +++ b/blog/2016/04/07/static-website/index.html @@ -153,7 +153,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html index 2f340a10c3..ea837fa9fc 100644 --- a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html +++ b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html @@ -161,7 +161,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/04/17/updated-documentation/index.html b/blog/2016/04/17/updated-documentation/index.html index 4ef4c046fe..73e8121543 100644 --- a/blog/2016/04/17/updated-documentation/index.html +++ b/blog/2016/04/17/updated-documentation/index.html @@ -145,7 +145,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/04/19/to-infinity-and-beyond/index.html b/blog/2016/04/19/to-infinity-and-beyond/index.html index 930d6f78dd..7242ca8030 100644 --- a/blog/2016/04/19/to-infinity-and-beyond/index.html +++ b/blog/2016/04/19/to-infinity-and-beyond/index.html @@ -162,7 +162,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html index c9ba953d6e..983aa5047e 100644 --- a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html +++ b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html @@ -180,7 +180,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html index c25d3b55d0..020a1bbc10 100644 --- a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html +++ b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html @@ -271,7 +271,9 @@ For example, my wife works next door - and I couldn’t detect whether she’s a
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/06/open-iot-summit-talk/index.html b/blog/2016/05/06/open-iot-summit-talk/index.html index 41420b639e..6b04cb36bd 100644 --- a/blog/2016/05/06/open-iot-summit-talk/index.html +++ b/blog/2016/05/06/open-iot-summit-talk/index.html @@ -143,7 +143,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/07/empowering-scripts-and-alexa/index.html b/blog/2016/05/07/empowering-scripts-and-alexa/index.html index a49b45d60a..5674ec0f49 100644 --- a/blog/2016/05/07/empowering-scripts-and-alexa/index.html +++ b/blog/2016/05/07/empowering-scripts-and-alexa/index.html @@ -233,7 +233,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/12/video-configuring-home-assistant/index.html b/blog/2016/05/12/video-configuring-home-assistant/index.html index 9c3f1dfe7e..be88188c7b 100644 --- a/blog/2016/05/12/video-configuring-home-assistant/index.html +++ b/blog/2016/05/12/video-configuring-home-assistant/index.html @@ -143,7 +143,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/18/why-we-use-polymer/index.html b/blog/2016/05/18/why-we-use-polymer/index.html index ba49d1ae99..3621950fcd 100644 --- a/blog/2016/05/18/why-we-use-polymer/index.html +++ b/blog/2016/05/18/why-we-use-polymer/index.html @@ -157,7 +157,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/21/release-020/index.html b/blog/2016/05/21/release-020/index.html index da67fe2cf0..d8e702dd40 100644 --- a/blog/2016/05/21/release-020/index.html +++ b/blog/2016/05/21/release-020/index.html @@ -178,7 +178,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html index 553d6e6a44..f5bd25b965 100644 --- a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html +++ b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html @@ -149,7 +149,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html index e946574fa7..4d18dddeeb 100644 --- a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html +++ b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html @@ -287,7 +287,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/06/01/community-highlights/index.html b/blog/2016/06/01/community-highlights/index.html index c6ae9c418a..3d1ddd43da 100644 --- a/blog/2016/06/01/community-highlights/index.html +++ b/blog/2016/06/01/community-highlights/index.html @@ -163,7 +163,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html index dd85cb1516..0cd5780d89 100644 --- a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html +++ b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html @@ -197,7 +197,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html index 3228ef1aa1..3c04888894 100644 --- a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html +++ b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html @@ -168,7 +168,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html index 07dc6be33f..6dcba24a40 100644 --- a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html +++ b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html @@ -192,7 +192,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html index 24104e3a81..019e6f2b14 100644 --- a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html +++ b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html @@ -258,7 +258,9 @@ target_dir /tmp
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html index f81c32572d..a45c93895c 100644 --- a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html +++ b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html @@ -191,7 +191,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/07/06/pocketchip-running-home-assistant/index.html b/blog/2016/07/06/pocketchip-running-home-assistant/index.html index 2f523c3dfc..e61bdad20a 100644 --- a/blog/2016/07/06/pocketchip-running-home-assistant/index.html +++ b/blog/2016/07/06/pocketchip-running-home-assistant/index.html @@ -194,7 +194,9 @@ $ hass --open-ui
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html index f9f2ef0ea6..efafba9af1 100644 --- a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html +++ b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html @@ -198,7 +198,9 @@ $ hass --script db_migrator --config /path/to/config
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/07/19/visualizing-your-iot-data/index.html b/blog/2016/07/19/visualizing-your-iot-data/index.html index 70fa0b3b4f..4fe44117b1 100644 --- a/blog/2016/07/19/visualizing-your-iot-data/index.html +++ b/blog/2016/07/19/visualizing-your-iot-data/index.html @@ -246,7 +246,9 @@ plt.savefig(' +
    + +
    + -

    Recent Posts

    diff --git a/blog/2016/07/28/esp8266-and-micropython-part1/index.html b/blog/2016/07/28/esp8266-and-micropython-part1/index.html index 46d7ee5135..3bc3a7aa30 100644 --- a/blog/2016/07/28/esp8266-and-micropython-part1/index.html +++ b/blog/2016/07/28/esp8266-and-micropython-part1/index.html @@ -304,7 +304,9 @@ PIN = 5
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html index 952c7adfa7..cdab675cb1 100644 --- a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html +++ b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html @@ -205,7 +205,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/08/03/laundry-automation-update/index.html b/blog/2016/08/03/laundry-automation-update/index.html index 39167acda3..c05fa28101 100644 --- a/blog/2016/08/03/laundry-automation-update/index.html +++ b/blog/2016/08/03/laundry-automation-update/index.html @@ -244,7 +244,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html index 7e739d0cb8..a357e3109b 100644 --- a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html +++ b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html @@ -280,7 +280,9 @@ document.body.appendChild(spinner);
  • +
    + -

    Recent Posts

    diff --git a/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html new file mode 100644 index 0000000000..c1be767ca2 --- /dev/null +++ b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html @@ -0,0 +1,299 @@ + + + + + + + + + + 0.26: Foursquare, Fast.com, FFMPEG and GPSD - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + +
    + +

    0.26: Foursquare, Fast.com, FFMPEG and GPSD

    + + + +
    + + + three minutes reading time + + + + + + Comments + +
    + +
    + + +

    It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

    + +

    This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

    + +

    + + + +

    Breaking changes

    + +
      +
    • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
    • +
    + +
    +
    # Configuration.yaml example
    +homeassistant:
    +  # 'metric' for the metric system, 'imperial' for the imperial system
    +  unit_system: metric
    +
    +
    +
    +
    + + +
    +

    Comments

    +
    +
    + + +
    + + + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/blog/archives/index.html b/blog/archives/index.html index 94379b5c03..afd220e63c 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -98,6 +98,38 @@

    2016

    + + + +
    @@ -2621,7 +2653,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/community/atom.xml b/blog/categories/community/atom.xml index 84978cea39..59e330453e 100644 --- a/blog/categories/community/atom.xml +++ b/blog/categories/community/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Community | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/community/index.html b/blog/categories/community/index.html index 67f5fae3a8..ca823a1059 100644 --- a/blog/categories/community/index.html +++ b/blog/categories/community/index.html @@ -226,7 +226,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/device-tracking/atom.xml b/blog/categories/device-tracking/atom.xml index f694d81d14..3a5c39809a 100644 --- a/blog/categories/device-tracking/atom.xml +++ b/blog/categories/device-tracking/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Device-Tracking | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/device-tracking/index.html b/blog/categories/device-tracking/index.html index 36df0623b7..a164919ab0 100644 --- a/blog/categories/device-tracking/index.html +++ b/blog/categories/device-tracking/index.html @@ -157,7 +157,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml index 9be5feadae..de147f5818 100644 --- a/blog/categories/esp8266/atom.xml +++ b/blog/categories/esp8266/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: ESP8266 | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ @@ -108,7 +108,7 @@ Home Assistant will keep track of historical values and allow you to integrate i
  • Open Arduino IDE and create a new sketch (File -> New)
  • Copy and paste the below sketch to the Arduino IDE
  • Adjust the values line 6 - 14 to match your setup
  • -
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.
  • +
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 62.
  • To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode.
  • Press the upload button in Arduino IDE
  • Open the serial monitor (Tools -> Serial Monitor) to see the output from your device
  • diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html index 5612594937..fcc75fb994 100644 --- a/blog/categories/esp8266/index.html +++ b/blog/categories/esp8266/index.html @@ -157,7 +157,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml index 818648b370..3a97e9e04a 100644 --- a/blog/categories/how-to/atom.xml +++ b/blog/categories/how-to/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: How-To | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/how-to/index.html b/blog/categories/how-to/index.html index 16d8686e25..bb3ef0d468 100644 --- a/blog/categories/how-to/index.html +++ b/blog/categories/how-to/index.html @@ -618,7 +618,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/ibeacons/atom.xml b/blog/categories/ibeacons/atom.xml index abca337822..0f34176149 100644 --- a/blog/categories/ibeacons/atom.xml +++ b/blog/categories/ibeacons/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: iBeacons | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/ibeacons/index.html b/blog/categories/ibeacons/index.html index 4a37037d98..3f4970a7b5 100644 --- a/blog/categories/ibeacons/index.html +++ b/blog/categories/ibeacons/index.html @@ -193,7 +193,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/internet-of-things/atom.xml b/blog/categories/internet-of-things/atom.xml index 91f6983b13..69e597c7c8 100644 --- a/blog/categories/internet-of-things/atom.xml +++ b/blog/categories/internet-of-things/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Internet-of-Things | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/internet-of-things/index.html b/blog/categories/internet-of-things/index.html index 33a61603db..f2913ac466 100644 --- a/blog/categories/internet-of-things/index.html +++ b/blog/categories/internet-of-things/index.html @@ -252,7 +252,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/iot-data/atom.xml b/blog/categories/iot-data/atom.xml index 1b21345888..2ae0e12bc3 100644 --- a/blog/categories/iot-data/atom.xml +++ b/blog/categories/iot-data/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: IoT-Data | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/iot-data/index.html b/blog/categories/iot-data/index.html index 54ab9efdbf..f34a6825bd 100644 --- a/blog/categories/iot-data/index.html +++ b/blog/categories/iot-data/index.html @@ -189,7 +189,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml index 63478cb5ea..3163dd329b 100644 --- a/blog/categories/mqtt/atom.xml +++ b/blog/categories/mqtt/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: MQTT | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ @@ -342,7 +342,7 @@ Home Assistant will keep track of historical values and allow you to integrate i
  • Open Arduino IDE and create a new sketch (File -> New)
  • Copy and paste the below sketch to the Arduino IDE
  • Adjust the values line 6 - 14 to match your setup
  • -
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.
  • +
  • Optional: If you want to connect to an MQTT server without a username or password, adjust line 62.
  • To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to indicate it is in upload mode.
  • Press the upload button in Arduino IDE
  • Open the serial monitor (Tools -> Serial Monitor) to see the output from your device
  • diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html index 50ebf19b9f..6af78351e4 100644 --- a/blog/categories/mqtt/index.html +++ b/blog/categories/mqtt/index.html @@ -228,7 +228,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/organisation/atom.xml b/blog/categories/organisation/atom.xml index 253d06cad6..149bf7230f 100644 --- a/blog/categories/organisation/atom.xml +++ b/blog/categories/organisation/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Organisation | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/organisation/index.html b/blog/categories/organisation/index.html index 0d861045db..1879706a76 100644 --- a/blog/categories/organisation/index.html +++ b/blog/categories/organisation/index.html @@ -188,7 +188,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/owntracks/atom.xml b/blog/categories/owntracks/atom.xml index a95bc52ffb..a57eb6a481 100644 --- a/blog/categories/owntracks/atom.xml +++ b/blog/categories/owntracks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: OwnTracks | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/owntracks/index.html b/blog/categories/owntracks/index.html index e8c61796af..7164d9a33a 100644 --- a/blog/categories/owntracks/index.html +++ b/blog/categories/owntracks/index.html @@ -193,7 +193,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/presence-detection/atom.xml b/blog/categories/presence-detection/atom.xml index 5a51ef2fcf..56e919c2e1 100644 --- a/blog/categories/presence-detection/atom.xml +++ b/blog/categories/presence-detection/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Presence-Detection | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/presence-detection/index.html b/blog/categories/presence-detection/index.html index 299e7308df..8d7ed3368b 100644 --- a/blog/categories/presence-detection/index.html +++ b/blog/categories/presence-detection/index.html @@ -157,7 +157,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/public-service-announcement/atom.xml b/blog/categories/public-service-announcement/atom.xml index aebf2e2ba8..62047102df 100644 --- a/blog/categories/public-service-announcement/atom.xml +++ b/blog/categories/public-service-announcement/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Public-Service-Announcement | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/public-service-announcement/index.html b/blog/categories/public-service-announcement/index.html index 71de879540..af65f65f02 100644 --- a/blog/categories/public-service-announcement/index.html +++ b/blog/categories/public-service-announcement/index.html @@ -153,7 +153,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index efc6518b83..96f2e93729 100644 --- a/blog/categories/release-notes/atom.xml +++ b/blog/categories/release-notes/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Release-Notes | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ @@ -13,6 +13,65 @@ Octopress + + <![CDATA[0.26: Foursquare, Fast.com, FFMPEG and GPSD]]> + + 2016-08-13T19:00:00+00:00 + https://home-assistant.io/blog/2016/08/13/foursquare--fast.com--ffmpeg--gpsd + It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

    + +

    This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

    + +

    + + + +

    Breaking changes

    + +
      +
    • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
    • +
    + +
    +
    # Configuration.yaml example
    +homeassistant:
    +  # 'metric' for the metric system, 'imperial' for the imperial system
    +  unit_system: metric
    +
    +
    +
    + +]]>
    +
    + <![CDATA[0.25: Custom frontend panels, Jupyter notebooks, DirecTV.]]> @@ -288,76 +347,6 @@ $ hass --script db_migrator --config /path/to/config
  • Insteon Hub lights will load again
  • -]]> -
    - - - <![CDATA[0.21: Improved Web and support for EnOcean, LIRC and Osram Lightify]]> - - 2016-06-08T01:06:00+00:00 - https://home-assistant.io/blog/2016/06/08/super-fast-web-enocean-lirc - It’s time for release 0.21 and it contains massive core improvements: replacement of our home grown HTTP stack with a standardized WSGI stack. This will improve performance, speed, security and make future development of advanced HTTP features a breeze.

    - -

    This work was driven by the amazing Josh Wright. His knowledge, high standards and drive for security has helped improve Home Assistant a lot ever since he started helping out. Hip hip hurray for Josh!

    - -

    Alright, time for the changes:

    - -

    - - - -

    Breaking Changes

    - -
      -
    • Our work in the WSGI stack is not fully done yet. We still have a minor issues where retrieving the error log in the about screen can raise an encoding error
    • -
    • The API used to incorrectly accept a JSON body with form-url-encoded headers. Our cURL examples on the website used to be wrong and have been updated.
    • -
    • Make sure your configuration.yaml file contains frontend: to serve the frontend
    • -
    - -

    Hotfixes 0.21.1 and 0.21.2

    - -

    We released two hotfixes to address some issues that couldn’t wait till the next release.

    - -
    0.21.1 - June 12
    - -
      -
    • Add eventlet to base requirements to resolve some installation issues (@balloob)
    • -
    • GTFS will filter out routes in the wrong direction (@imrehg)
    • -
    • Recover from rare error condition from LIRC (@partofthething)
    • -
    • Z-Wave autoheal will no longer raise exception (@balloob)
    • -
    • Alexa will now execute the script before making reply (@balloob)
    • -
    • Fix MJPEG camera streaming (@stjohnjohnson)
    • -
    • Fix frontend in older browsers (@balloob)
    • -
    • Fix history in more info dialog being cut off (@balloob)
    • -
    - -
    0.21.2 - June 15
    - -
      -
    • Fix input_select calling the set_option service again when changed (@persandstrom)
    • -
    • Fix more info dialog not being able to open on Safari (@balloob)
    • -
    • Add support for OPTIONS HTTP command to get CORS working (@JshWright)
    • -
    - ]]>
    diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 32eded7090..04fbf06f5a 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -98,6 +98,38 @@

    2016

    + + + +
    @@ -1406,7 +1438,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/survey/atom.xml b/blog/categories/survey/atom.xml index 655b0c35b8..7f397e593f 100644 --- a/blog/categories/survey/atom.xml +++ b/blog/categories/survey/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Survey | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/survey/index.html b/blog/categories/survey/index.html index 78095795b8..94441fbe03 100644 --- a/blog/categories/survey/index.html +++ b/blog/categories/survey/index.html @@ -153,7 +153,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/talks/atom.xml b/blog/categories/talks/atom.xml index fcc1355271..c6fee5daa5 100644 --- a/blog/categories/talks/atom.xml +++ b/blog/categories/talks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Talks | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/talks/index.html b/blog/categories/talks/index.html index bdf3c8b978..e6ed1fa4ed 100644 --- a/blog/categories/talks/index.html +++ b/blog/categories/talks/index.html @@ -155,7 +155,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/technology/atom.xml b/blog/categories/technology/atom.xml index f04383e3bd..ee98656ec9 100644 --- a/blog/categories/technology/atom.xml +++ b/blog/categories/technology/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Technology | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/technology/index.html b/blog/categories/technology/index.html index 617efcab81..486247b68e 100644 --- a/blog/categories/technology/index.html +++ b/blog/categories/technology/index.html @@ -185,7 +185,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml index 5ed9454933..0baa9967f3 100644 --- a/blog/categories/user-stories/atom.xml +++ b/blog/categories/user-stories/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: User-Stories | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html index 846414269e..4d4d73a802 100644 --- a/blog/categories/user-stories/index.html +++ b/blog/categories/user-stories/index.html @@ -188,7 +188,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml index f45f5fb600..789f948d4d 100644 --- a/blog/categories/video/atom.xml +++ b/blog/categories/video/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Video | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html index ae546646dc..13992319a6 100644 --- a/blog/categories/video/index.html +++ b/blog/categories/video/index.html @@ -356,7 +356,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index 6a8207ce00..ec59061957 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Website | Home Assistant]]> - 2016-08-13T15:59:07+00:00 + 2016-08-13T19:22:16+00:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index 896c34a558..40ab7a3a49 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -188,7 +188,9 @@
  • +
    + -

    Recent Posts

    diff --git a/blog/index.html b/blog/index.html index cd61f697ed..8646770f5e 100644 --- a/blog/index.html +++ b/blog/index.html @@ -78,6 +78,97 @@ +
    +
    + +

    + 0.26: Foursquare, Fast.com, FFMPEG and GPSD +

    + + + +
    + + + three minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.

    + +

    This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to @Teagan42 for her hard work on this!

    + +

    + + + +

    Breaking changes

    + +
      +
    • A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:
    • +
    + +
    +
    # Configuration.yaml example
    +homeassistant:
    +  # 'metric' for the metric system, 'imperial' for the imperial system
    +  unit_system: metric
    +
    +
    +
    + + + +
    +
    +
    +
    @@ -708,53 +799,6 @@ Over a year ago I participated in the -
    - -

    - Using USB webcams with Home Assistant -

    - - - -
    - - - four minutes reading time - - - - - - Comments - -
    - -
    - - -
    -


    -In the past month I was thinking about ways to integrate USB webcams into Home Assistant again. The main reason was that this would give those devices a second life and enable one to benefit from low-cost video surveillance. There are a couple of options available like pygame or SimpleCV but I never finished something. With the Local File camera platform by Landrash and motion you could integrate a local USB webcam with a few very easy steps.

    - -

    In this blog post I am using a Fedora 24 (will most likely work on other distributions too) installation with Home Assistant 0.22.1 on a Foxconn nT-330i with an old Logitech QuickCam Orbit AF and a Logitech HD Webcam C270. As a start only the Quickcam is used. No multi-camera setup for now.

    - - - - Read on → -

    @@ -788,7 +832,9 @@ In the past month I was thinking about ways to integrate USB webcams into Home A
  • +
    +
    diff --git a/blog/posts/2/index.html b/blog/posts/2/index.html index a6613c9237..26e42e3fd0 100644 --- a/blog/posts/2/index.html +++ b/blog/posts/2/index.html @@ -78,6 +78,53 @@ +
    +
    + +

    + Using USB webcams with Home Assistant +

    + + + +
    + + + four minutes reading time + + + + + + Comments + +
    + +
    + + +
    +


    +In the past month I was thinking about ways to integrate USB webcams into Home Assistant again. The main reason was that this would give those devices a second life and enable one to benefit from low-cost video surveillance. There are a couple of options available like pygame or SimpleCV but I never finished something. With the Local File camera platform by Landrash and motion you could integrate a local USB webcam with a few very easy steps.

    + +

    In this blog post I am using a Fedora 24 (will most likely work on other distributions too) installation with Home Assistant 0.22.1 on a Foxconn nT-330i with an old Logitech QuickCam Orbit AF and a Logitech HD Webcam C270. As a start only the Quickcam is used. No multi-camera setup for now.

    + + + + Read on → + +
    +
    +
    +
    @@ -698,143 +745,6 @@
    -
    -
    -
    - -
    -
    - -

    - 0.19: Empowering scripts and Alexa -

    - - - -
    - - - three minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic.

    - -

    Scripts are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including from_state !). Passing data to script entities is available by passing the data to the script services.

    - -
    -
    automation:
    -  trigger:
    -    platform: mqtt
    -    topic: some/notify/topic
    -  action:
    -    service: notify.notify
    -    data_template:
    -      message: 
    -
    -automation 2:
    -  trigger:
    -    platform: state
    -    entity_id: light.hue
    -  action:
    -    service: notify.notify
    -    data_template:
    -      message:  is now 
    -
    -
    -
    - -

    Entity Namespaces allow you to influence the entity ids for a specific platform. For example you can turn light.living_room into light.holiday_home_living_room with the following config:

    - -
    -
    light:
    -  platform: hue
    -  entity_namespace: holiday_home
    -
    -
    -
    - - - -

    Deprecations

    -
      -
    • Conditions in automations should now specify which condition to use with condition: instead of platform:. For example condition: state.
    • -
    • RFXtrx has a new config format.
    • -
    - -

    Old RFXtrx config format:

    - -
    -
      devices:
    -    123efab1:
    -      name: My DI.0 light device
    -      packetid: 1b2200000890efab1213f60
    -
    -
    -
    - -

    New RFXtrx config format:

    - -
    -
      devices:
    -    1b2200000890efab1213f60:
    -      name: My DI.0 light device
    -
    -
    -
    - -

    @@ -870,7 +780,9 @@
  • +
    +
    diff --git a/blog/posts/3/index.html b/blog/posts/3/index.html index 0c49fbc49e..cab382e731 100644 --- a/blog/posts/3/index.html +++ b/blog/posts/3/index.html @@ -78,6 +78,143 @@ +
    +
    + +

    + 0.19: Empowering scripts and Alexa +

    + + + +
    + + + three minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    This release is big. Until now, our automations and scripts have been very static. Starting today it should all be a bit more dynamic.

    + +

    Scripts are now available in automations and when responding to Alexa/Amazon Echo. Both of these components will now expose data to be used in script templates (including from_state !). Passing data to script entities is available by passing the data to the script services.

    + +
    +
    automation:
    +  trigger:
    +    platform: mqtt
    +    topic: some/notify/topic
    +  action:
    +    service: notify.notify
    +    data_template:
    +      message: 
    +
    +automation 2:
    +  trigger:
    +    platform: state
    +    entity_id: light.hue
    +  action:
    +    service: notify.notify
    +    data_template:
    +      message:  is now 
    +
    +
    +
    + +

    Entity Namespaces allow you to influence the entity ids for a specific platform. For example you can turn light.living_room into light.holiday_home_living_room with the following config:

    + +
    +
    light:
    +  platform: hue
    +  entity_namespace: holiday_home
    +
    +
    +
    + + + +

    Deprecations

    +
      +
    • Conditions in automations should now specify which condition to use with condition: instead of platform:. For example condition: state.
    • +
    • RFXtrx has a new config format.
    • +
    + +

    Old RFXtrx config format:

    + +
    +
      devices:
    +    123efab1:
    +      name: My DI.0 light device
    +      packetid: 1b2200000890efab1213f60
    +
    +
    +
    + +

    New RFXtrx config format:

    + +
    +
      devices:
    +    1b2200000890efab1213f60:
    +      name: My DI.0 light device
    +
    +
    +
    + + +
    +
    +
    +
    @@ -646,95 +783,6 @@ - -
    -
    - -
    -
    - -

    - 0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance. -

    - - - -
    - - - 1 minute reading time - - - - - - Comments - -
    - -
    - - -
    -

    Two weeks has past so here is 0.15! We have been focussing a lot on quality. Making sure the system is more stable and reliable. I usually try to highlight one cool thing in the release notes but this release has 4 exciting announcements!

    - -
      -
    • @fabaff has upgraded the codebase to follow the PEP257 documentation standard.
    • -
    • @partofthething has migrated us to use the main Python Open Z-Wave library instead of our forked version.
    • -
    • To make our automations more powerful, @persandstrom added the option to use templates to dynamically create service calls. This works for automation, Alexa, universal media player, template switch. Learn more.
    • -
    • @MartinHjelmare has upgraded our scene support to now support all built-in services and components.
    • -
    - -

    Besides bug fixes, this release also brings:

    - -

    - - - -
    -
    # Example using templates for service and data in service call.
    -# Works for automation, Alexa, universal media player, template switch.
    -automation:
    -  - trigger:
    -      - platform: state
    -        entity_id: switch.bathroom
    -    action:
    -      service_template: >
    -        {% if is_state('switch.bathroom', 'on') %}
    -          switch.turn_on
    -        {% else %}
    -          switch.turn_off
    -        {% endif %}
    -      data_template:
    -        entity_id: switch.{{ states('input_select.is') }}
    -
    -
    -
    - -

    Breaking Changes

    - -
      -
    • Media Player: Attributes to call service play_media has been renamed to
      -media_content_type and media_content_id, to match the corresponding media
      -player state attributes. This change affects automations, scripts and scenes.
    • -
    - - -

    @@ -770,7 +818,9 @@ player state attributes. This change affects automations, scripts and scenes.
    +
    +
    diff --git a/blog/posts/4/index.html b/blog/posts/4/index.html index 2844635f94..760c9919bd 100644 --- a/blog/posts/4/index.html +++ b/blog/posts/4/index.html @@ -78,6 +78,95 @@ +
    +
    + +

    + 0.15: Unforked Open Z-Wave, templated service calls, extended scene support and PEP257 compliance. +

    + + + +
    + + + 1 minute reading time + + + + + + Comments + +
    + +
    + + +
    +

    Two weeks has past so here is 0.15! We have been focussing a lot on quality. Making sure the system is more stable and reliable. I usually try to highlight one cool thing in the release notes but this release has 4 exciting announcements!

    + +
      +
    • @fabaff has upgraded the codebase to follow the PEP257 documentation standard.
    • +
    • @partofthething has migrated us to use the main Python Open Z-Wave library instead of our forked version.
    • +
    • To make our automations more powerful, @persandstrom added the option to use templates to dynamically create service calls. This works for automation, Alexa, universal media player, template switch. Learn more.
    • +
    • @MartinHjelmare has upgraded our scene support to now support all built-in services and components.
    • +
    + +

    Besides bug fixes, this release also brings:

    + +

    + + + +
    +
    # Example using templates for service and data in service call.
    +# Works for automation, Alexa, universal media player, template switch.
    +automation:
    +  - trigger:
    +      - platform: state
    +        entity_id: switch.bathroom
    +    action:
    +      service_template: >
    +        {% if is_state('switch.bathroom', 'on') %}
    +          switch.turn_on
    +        {% else %}
    +          switch.turn_off
    +        {% endif %}
    +      data_template:
    +        entity_id: switch.{{ states('input_select.is') }}
    +
    +
    +
    + +

    Breaking Changes

    + +
      +
    • Media Player: Attributes to call service play_media has been renamed to
      +media_content_type and media_content_id, to match the corresponding media
      +player state attributes. This change affects automations, scripts and scenes.
    • +
    + + + +
    +
    +
    +
    @@ -756,71 +845,6 @@ Example of the new views in the frontend. Learn mor - -
    -
    - -
    -
    - -

    - 0.10: Amazon Echo, iCloud, Dweet.io, Twitch and templating support! -

    - - - -
    - - - two minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    Alrighty, it’s time for Home Assistant 0.10. A lot amazing things have changed and sadly we also had to introduce a bunch of backwards incompatible changes. I would like to give a big shoutout to Philip Lundrigan (@philipbl) who put a lot in effort in helping the migration to move towards using templates for a wide variety of platforms.

    - -
    - -
    - -

    - - - - - - Read on → -

    @@ -856,7 +880,9 @@ Example of the new views in the frontend. Learn mor
  • +
    +
    diff --git a/blog/posts/5/index.html b/blog/posts/5/index.html index 0ca34575b8..9e1eb3862d 100644 --- a/blog/posts/5/index.html +++ b/blog/posts/5/index.html @@ -78,6 +78,71 @@ +
    +
    + +

    + 0.10: Amazon Echo, iCloud, Dweet.io, Twitch and templating support! +

    + + + +
    + + + two minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    Alrighty, it’s time for Home Assistant 0.10. A lot amazing things have changed and sadly we also had to introduce a bunch of backwards incompatible changes. I would like to give a big shoutout to Philip Lundrigan (@philipbl) who put a lot in effort in helping the migration to move towards using templates for a wide variety of platforms.

    + +
    + +
    + +

    + + + + + + Read on → + +
    +
    +
    +
    @@ -579,67 +644,6 @@ The InfluxDB database is a so-called time se

    -
    -
    - -

    - Report the temperature with ESP8266 to MQTT -

    - - - -
    - - - eight minutes reading time - - - - - - Comments - -
    - -
    - - -
    - -

    I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means that all your DIY projects can now be done for a fraction of the price.

    - -

    For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and report it to MQTT where Home Asssistant can pick it up.

    - -

    - -Picture of the final setup (+ 2 LED for decoration) -

    - -

    - -Home Assistant will keep track of historical values and allow you to integrate it into automation. -

    - - - - Read on → - -
    -
    -
    -
    +
    +
    diff --git a/blog/posts/6/index.html b/blog/posts/6/index.html index c57d9d6bef..ed55e22d38 100644 --- a/blog/posts/6/index.html +++ b/blog/posts/6/index.html @@ -78,6 +78,67 @@ +
    +
    + +

    + Report the temperature with ESP8266 to MQTT +

    + + + +
    + + + eight minutes reading time + + + + + + Comments + +
    + +
    + + +
    + +

    I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means that all your DIY projects can now be done for a fraction of the price.

    + +

    For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and report it to MQTT where Home Asssistant can pick it up.

    + +

    + +Picture of the final setup (+ 2 LED for decoration) +

    + +

    + +Home Assistant will keep track of historical values and allow you to integrate it into automation. +

    + + + + Read on → + +
    +
    +
    +
    @@ -610,67 +671,6 @@ Inspried by a -
    - -

    - MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported -

    - - - -
    - - - three minutes reading time - - - - - - Comments - -
    - -
    - - -
    -

    It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

    - -

    MQTT Support
    - The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

    - -
    -
    # Example configuration.yaml entry
    -mqtt:
    -  broker: IP_ADDRESS_BROKER
    -  # All the other options are optional:
    -  port: 1883
    -  keepalive: 60
    -  qos: 0
    -  username: your_username
    -  password: your_secret_password
    -
    -
    -
    - - - - Read on → - -
    -
    -
    -
    +
    +
    diff --git a/blog/posts/7/index.html b/blog/posts/7/index.html index 48fe484c93..1e5858773f 100644 --- a/blog/posts/7/index.html +++ b/blog/posts/7/index.html @@ -78,6 +78,67 @@ +
    +
    + +

    + MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported +

    + + + +
    + + + three minutes reading time + + + + + + Comments + +
    + +
    + + +
    +

    It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to @balloob. If you’re a developer, make sure you read up on the deprecation notices. @fabaff did another great round of documentating all the various components.

    + +

    MQTT Support
    + The big new addition in this release is the support for the MQTT protocol by @fabaff with some help from @balloob. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (see the example) and also support for the automation component has been added. For more information, see the MQTT component page.

    + +
    +
    # Example configuration.yaml entry
    +mqtt:
    +  broker: IP_ADDRESS_BROKER
    +  # All the other options are optional:
    +  port: 1883
    +  keepalive: 60
    +  qos: 0
    +  username: your_username
    +  password: your_secret_password
    +
    +
    +
    + + + + Read on → + +
    +
    +
    +
    @@ -648,54 +709,6 @@ The old logo, the new detailed logo and the new simple logo.

    -
    -
    - -

    - Streaming updates -

    - - - -
    - - - 1 minute reading time - - - - - - Comments - -
    - -
    - - -
    -

    Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.

    - -

    A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.

    - -

    - - - - Read on → - -
    -
    -
    -
    +
    +
    diff --git a/blog/posts/8/index.html b/blog/posts/8/index.html index d3006995b5..6becdccf0d 100644 --- a/blog/posts/8/index.html +++ b/blog/posts/8/index.html @@ -78,6 +78,54 @@ +
    +
    + +

    + Streaming updates +

    + + + +
    + + + 1 minute reading time + + + + + + Comments + +
    + +
    + + +
    +

    Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.

    + +

    A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.

    + +

    + + + + Read on → + +
    +
    +
    +
    @@ -501,7 +549,9 @@ This article will try to explain how they all relate.

  • +
    +
    diff --git a/components/alarm_control_panel.verisure/index.html b/components/alarm_control_panel.verisure/index.html index 93e9726493..effdd7e146 100644 --- a/components/alarm_control_panel.verisure/index.html +++ b/components/alarm_control_panel.verisure/index.html @@ -93,6 +93,24 @@

    The requirement is that you have setup your Verisure hub.

    +

    The changed_by attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in automation.

    + +
    +
    automation:
    +  - alias: Alarm status changed
    +    trigger:
    +      - platform: state
    +        entity_id: alarm_control_panel.alarm_1
    +    action:
    +      - service: notify.notify
    +        data_template:
    +          message: >
    +            Alarm changed from {{ trigger.from_state.state }}
    +            to {{ trigger.to_state.state }}
    +            by {{ trigger.to_state.attributes.changed_by }}
    +
    +
    +
    diff --git a/components/apcupsd/index.html b/components/apcupsd/index.html index dca8993c78..ea275d5266 100644 --- a/components/apcupsd/index.html +++ b/components/apcupsd/index.html @@ -188,6 +188,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/arduino/index.html b/components/arduino/index.html index f9096b2b61..954c81ae4b 100644 --- a/components/arduino/index.html +++ b/components/arduino/index.html @@ -182,6 +182,9 @@ A word of caution: The Arduino boards are not storing states. This means that wi
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/bloomsky/index.html b/components/bloomsky/index.html index 8a224c9e7b..97c84bd752 100644 --- a/components/bloomsky/index.html +++ b/components/bloomsky/index.html @@ -185,6 +185,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/browser/index.html b/components/browser/index.html index 3328929fc9..d76a4dc0cb 100644 --- a/components/browser/index.html +++ b/components/browser/index.html @@ -168,6 +168,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/camera.bloomsky/index.html b/components/camera.bloomsky/index.html index 3f93937c0a..7d015b32a4 100644 --- a/components/camera.bloomsky/index.html +++ b/components/camera.bloomsky/index.html @@ -141,6 +141,9 @@
  • BloomSky Camera
  • +
  • + FFmpeg Camera +
  • Foscam IP Camera
  • diff --git a/components/camera.ffmpeg/index.html b/components/camera.ffmpeg/index.html new file mode 100644 index 0000000000..b330ad86ae --- /dev/null +++ b/components/camera.ffmpeg/index.html @@ -0,0 +1,220 @@ + + + + + + + + + + FFmpeg Camera - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + FFmpeg Camera +

    +
    +
    + + +

    The ffmpeg platform allows you to use every video feed with FFmpeg as camera in Home Assistant.

    + +

    +You need a ffmpeg binary in your system path. On debain 8 you can install it from backports. If you want HW support on raspberry you need self build from source. Windows binary are avilable on ffmpeg homepage. +

    + +

    To enable your FFmpeg feed in your installation, add the following to your configuration.yaml file:

    + +
    +
    # Example configuration.yaml entry
    +camera:
    +  - platform: ffmpeg
    +    input: FFMPEG_SUPPORTED_INPUT
    +    name: FFmpeg
    +    ffmpeg_bin: /usr/bin/ffmpeg
    +    extra_arguments: -q:v 2
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • input (Required): A ffmpeg compatible input file, stream or feet.
    • +
    • name (Optional): This parameter allows you to override the name of your camera.
    • +
    • ffmpeg_bin (Optional): Default ‘ffmpeg’.
    • +
    • extra_arguments (Optional): Extra option they will pass to ffmpeg. i.e. image quality or video filter options.
    • +
    + +

    Image quality

    + +

    You can control the image quality with extra_arguments -q:v 2-32 or with lossless option -pred 1.

    + + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/camera.foscam/index.html b/components/camera.foscam/index.html index 185773fe4f..666a725f8d 100644 --- a/components/camera.foscam/index.html +++ b/components/camera.foscam/index.html @@ -149,6 +149,9 @@ There seems to be some issues within Foscam with lengthy passwords and passwords
  • BloomSky Camera
  • +
  • + FFmpeg Camera +
  • Foscam IP Camera
  • diff --git a/components/camera.generic/index.html b/components/camera.generic/index.html index 3fd510a554..97aa2a105f 100644 --- a/components/camera.generic/index.html +++ b/components/camera.generic/index.html @@ -145,6 +145,9 @@
  • BloomSky Camera
  • +
  • + FFmpeg Camera +
  • Foscam IP Camera
  • diff --git a/components/camera.local_file/index.html b/components/camera.local_file/index.html index d52f2f2c8e..0d8a39203e 100644 --- a/components/camera.local_file/index.html +++ b/components/camera.local_file/index.html @@ -149,6 +149,9 @@ The given file_path must be an existing file because the camera pla
  • BloomSky Camera
  • +
  • + FFmpeg Camera +
  • Foscam IP Camera
  • diff --git a/components/camera.mjpeg/index.html b/components/camera.mjpeg/index.html index 99c11d2777..825ed16d29 100644 --- a/components/camera.mjpeg/index.html +++ b/components/camera.mjpeg/index.html @@ -149,6 +149,9 @@ There is a -

    This platform allows you to detect presence using Locative. Locative is an open source app for iOS that allows users to set up a GET or POST request when a geofence is entered or exited. This can be configured with Home Assistant to update your location.

    +

    This platform allows you to detect presence using Locative. Locative is an open source app for iOS and Android that allows users to set up a GET or POST request when a geofence is entered or exited. This can be configured with Home Assistant to update your location.

    To integrate Locative in Home Assistant, add the following section to your configuration.yaml file:

    @@ -101,6 +101,13 @@ +

    Install on your smartphone:

    + + +

    To configure Locative, you must set up the app to send a GET request to your Home Assistant server at http://<ha_server>/api/locative. Make sure to include the API password if you have configured a password in Home Assistant (add ?api_password=<password> to the end of the URL). When you enter or exit a geofence, Locative will send a GET request to that URL, updating Home Assistant.

    diff --git a/components/discovery/index.html b/components/discovery/index.html index e35bc7c65b..cb8ab03ec8 100644 --- a/components/discovery/index.html +++ b/components/discovery/index.html @@ -166,6 +166,9 @@ If you see Not initializing discovery because could not install dependency

  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/downloader/index.html b/components/downloader/index.html index 7caa3dbce8..fbd00bdebb 100644 --- a/components/downloader/index.html +++ b/components/downloader/index.html @@ -177,6 +177,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/ecobee/index.html b/components/ecobee/index.html index d78285459b..c9d5cb3a41 100644 --- a/components/ecobee/index.html +++ b/components/ecobee/index.html @@ -195,6 +195,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/enocean/index.html b/components/enocean/index.html index 88613c18cc..96d83e73a5 100644 --- a/components/enocean/index.html +++ b/components/enocean/index.html @@ -209,6 +209,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/feedreader/index.html b/components/feedreader/index.html index 3b33fa4bc2..a55ff26e20 100644 --- a/components/feedreader/index.html +++ b/components/feedreader/index.html @@ -175,6 +175,9 @@ hass.bus.listen(EVENT_FEEDREADER, event_listener)
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/foursquare/index.html b/components/foursquare/index.html new file mode 100644 index 0000000000..bfab543d1c --- /dev/null +++ b/components/foursquare/index.html @@ -0,0 +1,258 @@ + + + + + + + + + + Foursquare - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Foursquare +

    +
    +
    + + +

    The foursquare component accepts pushes from the Foursquare Real-Time API and a service to check users in on Swarm.

    + +
    +
    # Example configuration.yaml entry
    +foursquare:
    +  access_token: "<foursquare access token>"
    +  push_secret: "<foursquare push secret>"
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • access_token (Required): A Foursquare API access token.
    • +
    • push_secret (Required): The push secret that Foursquare provides to you in the app dashboard.
    • +
    + +

    Real-Time API

    + +

    The component accepts pushes from Foursquare at /api/foursquare. The route does not require authentication.

    + +

    Foursquare checkin events can be used out of the box to trigger automation actions, e.g.:

    + +
    +
    automation:
    +  - alias: Trigger action when you check into a venue.
    +    trigger:
    +      platform: event
    +      event_type: foursquare.push
    +    action:
    +      service: script.turn_on
    +      entity_id: script.my_action
    +
    +
    +
    + +

    Check ins

    + +

    To check a user in, use the foursquare/checkin service.

    + +

    Parameters:

    + +
      +
    • venueId (Required): The Foursquare venue where the user is checking in.
    • +
    • eventId (Optional): The event the user is checking in to.
    • +
    • shout (Optional): A message about your check-in. The maximum length of this field is 140 characters.
    • +
    • mentions (Optional): Mentions in your check-in. This parameter is a semicolon-delimited list of mentions. A single mention is of the form “start,end,userid”, where start is the index of the first character in the shout representing the mention, end is the index of the first character in the shout after the mention, and userid is the userid of the user being mentioned. If userid is prefixed with “fbu-“, this indicates a Facebook userid that is being mention. Character indices in shouts are 0-based.
    • +
    • broadcast (Optional): “Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), facebook share on facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public.”
    • +
    • ll (Optional): Latitude and longitude of the user’s location. Only specify this field if you have a GPS or other device reported location for the user at the time of check-in.
    • +
    • llAcc (Optional): Accuracy of the user’s latitude and longitude, in meters.
    • +
    • alt (Optional): Altitude of the user’s location, in meters.
    • +
    • altAcc (Optional): Vertical accuracy of the user’s location, in meters.
    • +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/homematic/index.html b/components/homematic/index.html index 781998723c..d0f8f3cbaa 100644 --- a/components/homematic/index.html +++ b/components/homematic/index.html @@ -278,6 +278,9 @@ The name depends on if you chose to resolve names or not. If not, it will be the
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/http/index.html b/components/http/index.html index d6f8865efc..52756619fc 100644 --- a/components/http/index.html +++ b/components/http/index.html @@ -179,6 +179,9 @@ It’s HIGHLY recommended that you set the api_password, especially
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/ifttt.manything/index.html b/components/ifttt.manything/index.html index 138936f88d..7c9b6a3f79 100644 --- a/components/ifttt.manything/index.html +++ b/components/ifttt.manything/index.html @@ -197,6 +197,9 @@ For ManyThing support, you need to set up an on and off BloomSky Camera +
  • + FFmpeg Camera +
  • Foscam IP Camera
  • diff --git a/components/index.html b/components/index.html index 6c4d1a4a01..99add95005 100644 --- a/components/index.html +++ b/components/index.html @@ -1116,6 +1116,20 @@ Support for these components is provided by the Home Assistant community. + + + + + + + +
    + + + +
    +
    Foursquare
    +
    Other
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/introduction/index.html b/components/introduction/index.html index 80afff5981..40f86b7e15 100644 --- a/components/introduction/index.html +++ b/components/introduction/index.html @@ -139,6 +139,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/isy994/index.html b/components/isy994/index.html index 68c08c4bb2..c0469ca2f8 100644 --- a/components/isy994/index.html +++ b/components/isy994/index.html @@ -238,6 +238,9 @@ The ISY994 controller is manufactured by + + + + + + + + MQTT JSON Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + MQTT JSON Light +

    +
    +
    + + +

    The mqtt_json light platform let you control a MQTT-enabled light that can receive JSON messages.

    + +

    This platform supports on/off, brightness, RGB colors, transitions, and short/long flashing. The messages sent to/from the lights look similar to this, omitting fields when they aren’t needed:

    + +
    +
    {
    +  "brightness": 255,
    +  "color": {
    +    "g": 255,
    +    "b": 255,
    +    "r": 255
    +  },
    +  "transition": 2,
    +  "state": "ON"
    +}
    +
    +
    +
    + +

    In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with the RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the light will be off.

    + +

    When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from device (message from state_topic).

    + +

    Optimistic mode can be forced, even if state topic is available. Try enabling it if the light is operating incorrectly.

    + +

    To enable a light with brightness and RGB support in your installation, add the following to your configuration.yaml file:

    + +
    +
    # Example configuration.yaml entry
    +light:
    +  - platform: mqtt_json
    +    name: mqtt_json_light_1
    +    state_topic: "home/rgb1"
    +    command_topic: "home/rgb1/set"
    +    brightness: true
    +    rgb: true
    +
    +
    +
    + +

    To enable a light with brightness (but no color support) in your installation, add the following to your configuration.yaml file:

    + +
    +
    # Example configuration.yaml entry
    +light:
    +  - platform: mqtt_json
    +    name: mqtt_json_light_1
    +    state_topic: "home/rgb1"
    +    command_topic: "home/rgb1/set"
    +    brightness: true
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • name (Optional): The name of the light. Default is “MQTT JSON Light.”
    • +
    • state_topic (Optional): The MQTT topic subscribed to receive state updates.
    • +
    • command_topic (Required): The MQTT topic to publish commands to change the light’s state.
    • +
    • brightness (Optional): Flag that defines if the light supports brightness. Default is false.
    • +
    • rgb (Optional): Flag that defines if the light supports RGB colors. Default is false.
    • +
    • flash_time_short (Optional): The duration, in seconds, of a “short” flash. Default is 2.
    • +
    • flash_time_long (Optional): The duration, in seconds, of a “long” flash. Default is 10.
    • +
    • optimistic (Optional): Flag that defines if the light works in optimistic mode. Default is true if no state topic defined, else false.
    • +
    • qos (Optional): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
    • +
    + +

    + Make sure that your topics match exact. some-topic/ and some-topic are different topics. +

    + +

    A full example of custom lighting using this platform and an ESP8266 microcontroller can be found here. It supports on/off, brightness, transitions, RGB colors, and flashing.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/light.mysensors/index.html b/components/light.mysensors/index.html index 5eb13d71cb..bbb432ee3b 100644 --- a/components/light.mysensors/index.html +++ b/components/light.mysensors/index.html @@ -280,6 +280,9 @@ MyMessage rgbMsg(CHILD_ID, V_RGB);
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.osramlightify/index.html b/components/light.osramlightify/index.html index 9886b5de04..ae2aa8c879 100644 --- a/components/light.osramlightify/index.html +++ b/components/light.osramlightify/index.html @@ -156,6 +156,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.qwikswitch/index.html b/components/light.qwikswitch/index.html index 3c22d3943c..cd3e5ff92e 100644 --- a/components/light.qwikswitch/index.html +++ b/components/light.qwikswitch/index.html @@ -157,6 +157,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.rfxtrx/index.html b/components/light.rfxtrx/index.html index 36b6b7a39d..19bdefc2f8 100644 --- a/components/light.rfxtrx/index.html +++ b/components/light.rfxtrx/index.html @@ -213,6 +213,9 @@ Then you should update your configuration to:

  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.scsgate/index.html b/components/light.scsgate/index.html index acc7422b92..a147c93052 100644 --- a/components/light.scsgate/index.html +++ b/components/light.scsgate/index.html @@ -175,6 +175,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.tellstick/index.html b/components/light.tellstick/index.html index e831863772..0b6ebeb775 100644 --- a/components/light.tellstick/index.html +++ b/components/light.tellstick/index.html @@ -165,6 +165,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.vera/index.html b/components/light.vera/index.html index 3791a5a8b4..b630073235 100644 --- a/components/light.vera/index.html +++ b/components/light.vera/index.html @@ -166,6 +166,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.wemo/index.html b/components/light.wemo/index.html index 5b3927f0cb..6317345709 100644 --- a/components/light.wemo/index.html +++ b/components/light.wemo/index.html @@ -160,6 +160,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.wink/index.html b/components/light.wink/index.html index f63971814b..d63666921f 100644 --- a/components/light.wink/index.html +++ b/components/light.wink/index.html @@ -166,6 +166,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.x10/index.html b/components/light.x10/index.html index 98908e7019..6916f7f190 100644 --- a/components/light.x10/index.html +++ b/components/light.x10/index.html @@ -168,6 +168,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.zigbee/index.html b/components/light.zigbee/index.html index cc7e6021d0..3c88e9ca9d 100644 --- a/components/light.zigbee/index.html +++ b/components/light.zigbee/index.html @@ -178,6 +178,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light.zwave/index.html b/components/light.zwave/index.html index 44d443de85..098917519b 100644 --- a/components/light.zwave/index.html +++ b/components/light.zwave/index.html @@ -170,6 +170,9 @@
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/light/index.html b/components/light/index.html index 8b60a6193a..c0eb448c28 100644 --- a/components/light/index.html +++ b/components/light/index.html @@ -269,6 +269,9 @@ The light component supports multiple entries in configuration.yaml
  • LimitlessLED
  • +
  • + MQTT JSON Light +
  • MQTT Light
  • diff --git a/components/logger/index.html b/components/logger/index.html index ea1f26e995..6a00011180 100644 --- a/components/logger/index.html +++ b/components/logger/index.html @@ -172,6 +172,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/media_player.mpchc/index.html b/components/media_player.mpchc/index.html index c994784a0e..caf4181da7 100644 --- a/components/media_player.mpchc/index.html +++ b/components/media_player.mpchc/index.html @@ -97,6 +97,12 @@

    +

    If the server running Home Assistant is not the same device that is running MPC-HC, you will need to ensure that the allow access from localhost only option is not set.

    + +

    +The MPC-HC web interface is highly insecure, and allows remote clients full player control file-system access without authentication. Never allow access to the Web UI from outside of your trusted network, and if possible use a proxy script to restrict control or redact sensitive information. +

    +

    To add MPC-HC to your installation, add the following to your configuration.yaml file:

    diff --git a/components/modbus/index.html b/components/modbus/index.html index 7edf2cb111..f258621841 100644 --- a/components/modbus/index.html +++ b/components/modbus/index.html @@ -227,6 +227,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/mqtt/index.html b/components/mqtt/index.html index 0217e98df5..a9889e0efe 100644 --- a/components/mqtt/index.html +++ b/components/mqtt/index.html @@ -516,6 +516,9 @@ Home Assistant will automatically load the correct certificate if you connect to
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/mqtt_eventstream/index.html b/components/mqtt_eventstream/index.html index 8a1337fbb1..54dc605084 100644 --- a/components/mqtt_eventstream/index.html +++ b/components/mqtt_eventstream/index.html @@ -150,6 +150,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/mysensors/index.html b/components/mysensors/index.html index 175968ac78..61654005e4 100644 --- a/components/mysensors/index.html +++ b/components/mysensors/index.html @@ -241,6 +241,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/nest/index.html b/components/nest/index.html index 119158947f..5d032f8381 100644 --- a/components/nest/index.html +++ b/components/nest/index.html @@ -103,11 +103,40 @@
    +
    +
    # Example configuration.yaml entry to show only devices at your vacation home
    +nest:
    +  username: USERNAME
    +  password: PASSWORD
    +  structure: Vacation
    +
    +thermostat:
    +  platform: nest
    +
    +
    +
    + +
    +
    # Example configuration.yaml entry to show only devices at your vacation and primary homes
    +nest:
    +  username: USERNAME
    +  password: PASSWORD
    +  structure:
    +    - Vacation
    +    - Primary
    +
    +thermostat:
    +  platform: nest
    +
    +
    +
    +

    Configuration variables:

    • username (Required): Your Nest username.
    • password (Required): Your Nest password.
    • +
    • structure (Optional): The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account.
    @@ -188,6 +217,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/netatmo/index.html b/components/netatmo/index.html index b4e23c5eb5..dcd0d0a966 100644 --- a/components/netatmo/index.html +++ b/components/netatmo/index.html @@ -215,6 +215,9 @@ The Home Assistant NetAtmo platform has only be tested with the classic indoor,
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/notify.aws_lambda/index.html b/components/notify.aws_lambda/index.html index bb6b93bf58..d1c8aeeb3b 100644 --- a/components/notify.aws_lambda/index.html +++ b/components/notify.aws_lambda/index.html @@ -149,7 +149,7 @@ "latitude": 44.1234, "location_name": "Home", "longitude": 5.5678, - "temperature_unit": "°C", + "unit_system": "metric", "time_zone": "Europe/Zurich", "version": "0.20.0.dev0" }, diff --git a/components/notify.smtp/index.html b/components/notify.smtp/index.html index 5757322f98..375bdbb383 100644 --- a/components/notify.smtp/index.html +++ b/components/notify.smtp/index.html @@ -122,6 +122,29 @@
  • starttls (Optional): Enables STARTTLS, eg. 1 or 0. Defaults to 0.
  • +

    To use the smtp notification, refer to it in an automation or script like in this example:

    + +
    +
      burglar: 
    +    alias: Burglar Alarm
    +    sequence:
    +      - service: shell_command.snapshot
    +      - delay:
    +            seconds: 1
    +      - service: notify.NOTIFIER_NAME
    +        data:
    +            title: 'Intruder alert'
    +            message: 'Intruder alert at apartment!!'
    +            data:
    +                images: 
    +                    - /home/pi/snapshot1.jpg
    +                    - /home/pi/snapshot2.jpg
    +
    +
    +
    + +

    The optional images field adds in-line image attachments to the email. This sends a text/HTML multi-part message instead of the plain text default.

    +

    This platform is fragile and not able to catch all exceptions in a smart way because of the large number of possible configuration combinations.

    A combination that will work properly is port 587 and STARTTLS. It’s recommended to enable STARTTLS, if possible.

    diff --git a/components/octoprint/index.html b/components/octoprint/index.html index 2f8cb08fff..f86addf109 100644 --- a/components/octoprint/index.html +++ b/components/octoprint/index.html @@ -188,6 +188,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/panel_custom/index.html b/components/panel_custom/index.html new file mode 100644 index 0000000000..dfba1f9b6a --- /dev/null +++ b/components/panel_custom/index.html @@ -0,0 +1,188 @@ + + + + + + + + + + Panel Custom - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Panel Custom +

    +
    +
    + + +

    The panel_custom support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized.

    + +

    To enable customized panels in your installation, add the following to your configuration.yaml file:

    + +
    +
    # Example configuration.yaml entry
    +panel_custom:
    +  - name: todomvc
    +    sidebar_title: TodoMVC
    +    sidebar_icon: mdi:work
    +    url_path: my-todomvc
    +    webcomponent_path: /home/hass/hello.html
    +    config:
    +      hello: world
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • name (Optional): Name of the panel.
    • +
    • sidebar_title (Optional): Friendly title for the panel in the sidebar. Omitting it means no sidebar entry (but still accessible through the URL).
    • +
    • sidebar_icon (Optional): Icon for entry. Pick an icon that you can find on materialdesignicons.com to use for your input and prefix the name with mdi:. For example mdi:car, mdi:ambulance, or mdi:motorbike.
    • +
    • url_path (Optional): The URL your panel will be available on. If omitted will default to the panel name.
    • +
    • webcomponent_path (Optional): The path to your component. If omitted will default to <config dir>/panels/<component name>.html
    • +
    • config (Optional): Configuration to be passed into your web component when being instantiated.
    • +
    + + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/panel_iframe/index.html b/components/panel_iframe/index.html index 07de1cc75c..cb3d8be2a0 100644 --- a/components/panel_iframe/index.html +++ b/components/panel_iframe/index.html @@ -145,6 +145,9 @@

    Category Frontend

      +
    • + Panel Custom +
    • Panel iFrame
    • diff --git a/components/persistent_notification/index.html b/components/persistent_notification/index.html index 92db541acb..e83097c830 100644 --- a/components/persistent_notification/index.html +++ b/components/persistent_notification/index.html @@ -197,6 +197,9 @@
    • Feedreader
    • +
    • + Foursquare +
    • HTTP
    • diff --git a/components/pilight/index.html b/components/pilight/index.html new file mode 100644 index 0000000000..53945f0a09 --- /dev/null +++ b/components/pilight/index.html @@ -0,0 +1,284 @@ + + + + + + + + + + Pilight - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      +
      + + + +
      +
      + +
      + + +
      + + + + +
      +

      + Pilight +

      +
      +
      + + +

      Pilight is a modular and open source solution to communicate with 433 MHz devices and runs on various small form factor computers. A lot of common protocols are already available.

      + +

      This pilight hub connects to the pilight-daemon via a socket connection to receive and send codes. Thus home assistant does not have to run on the computer in charge of the RF communication.

      + +

      The received and supported RF codes are put on the event bus of home assistant and are therefore directly usable by other components (e.g. automation). Additionally a send service is provided to send RF codes.

      + +

      To integrate pilight into Home Assistant, add the following section to your configuration.yaml file:

      + +
      +
      # Example configuration.yaml entry
      +pilight:
      +  - host: 127.0.0.1
      +    port: 5000
      +    whitelist:  # optional
      +      protocol:
      +        - daycom
      +        - intertechno
      +      id:
      +        - 42
      +
      +
      +
      + +

      Configuration variables:

      + +
        +
      • host (Required): The IP address of the computer running the pilight-daemon, e.g. 192.168.1.32.
      • +
      • port (Required): The network port to connect to. The usual port is 5000.
      • +
      • whitelist (Optional): You can define a whitelist to prevent that too many unwanted RF codes (e.g. the neighbours weather station) are put on your HA event bus. All defined subsections have to be matched. A subsection is matched if one of the items are true.
      • +
      + +

      In this example only received RF codes using a daycom or intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight API.

      + +

      Troubleshooting

      + +
        +
      • A list of tested RF transceiver hardware is available here. This might be usefull before buying.
      • +
      • Sending commands is simple when the protocol is known by pilight, but receiving commands can be rather difficult. It can happend that the code is not correctly recognized due to different timings in the sending hardware or the RF receiver. If this happens follow these steps:
      • +
      + +
        +
      1. Install pilight from source (do not worry that is very easy) and only activate the protocols you are expecting in the pop up menu. This reduces false positives.
      2. +
      3. Check the real timings of your device + RF receiver by running pilight-debug. Remember the pulslen parameter.
      4. +
      5. Go to the libs/pilight/protocols/433.92 subfolder of the pilight source code and open the .c file of your protocol. Search for MIN_PULSE_LENGTH, MAX_PULSE_LENGTH and AVG_PULSE_LENGTH. Change the pulse lengths to match your measured one. Recompile and install pilight by re-running $ sudo ./setup.sh.
      6. +
      + + +
      + + +
      + + + + +
      +
      + + + + + + \ No newline at end of file diff --git a/components/proximity/index.html b/components/proximity/index.html index d72ddacddf..10233cdd66 100644 --- a/components/proximity/index.html +++ b/components/proximity/index.html @@ -131,6 +131,7 @@ - device_tracker.eleanorsiphone - device_tracker.tsiphone tolerance: 50 + unit_of_measurement: mi
    @@ -142,8 +143,25 @@
  • ignored_zones array (Optional): Where proximity is not calculated for a device (either the device being monitored or ones being compared (e.g. work or school).
  • devices array (Optional): A list of devices to compare location against to check closeness to the configured zone.
  • tolerance (Optional): The tolerance used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes.
  • +
  • unit_of_measurement (Optional): The unit of measurement for distance. Valid values are (km, m, mi, ft) [kilometers, meters, miles and feet respectfully]. The default value is kilometers.
  • +

    To add multiple proximity components, simply use a list in your configuration.yaml file:

    + +
    +
    # Example configuration.yaml entry
    +proximity:
    +  - zone: home
    +    devices:
    +      - device_tracker.tsiphone
    +    tolerance: 50
    +  - zone: work
    +    devices:
    +      - device_tracker.elanorsiphone
    +    tolerance: 10
    +
    +
    +
    diff --git a/components/qwikswitch/index.html b/components/qwikswitch/index.html index cabf1460ad..62d7d5f090 100644 --- a/components/qwikswitch/index.html +++ b/components/qwikswitch/index.html @@ -216,6 +216,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/rfxtrx/index.html b/components/rfxtrx/index.html index 11cb3b4eb5..365e9cc60e 100644 --- a/components/rfxtrx/index.html +++ b/components/rfxtrx/index.html @@ -195,6 +195,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/scsgate/index.html b/components/scsgate/index.html index 7cd394514a..1418290668 100644 --- a/components/scsgate/index.html +++ b/components/scsgate/index.html @@ -196,6 +196,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/sensor.apcupsd/index.html b/components/sensor.apcupsd/index.html index 5588046fa7..74a006be9d 100644 --- a/components/sensor.apcupsd/index.html +++ b/components/sensor.apcupsd/index.html @@ -261,12 +261,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -312,6 +318,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.arduino/index.html b/components/sensor.arduino/index.html index 23e4dc05b9..15aa2b0d89 100644 --- a/components/sensor.arduino/index.html +++ b/components/sensor.arduino/index.html @@ -176,6 +176,9 @@
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/sensor.arest/index.html b/components/sensor.arest/index.html index 9a50857387..19f02f6e36 100644 --- a/components/sensor.arest/index.html +++ b/components/sensor.arest/index.html @@ -244,12 +244,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -295,6 +301,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.bitcoin/index.html b/components/sensor.bitcoin/index.html index 30b88fc959..4e513e77c5 100644 --- a/components/sensor.bitcoin/index.html +++ b/components/sensor.bitcoin/index.html @@ -217,12 +217,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -268,6 +274,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.bloomsky/index.html b/components/sensor.bloomsky/index.html index 3398615636..1a4b471078 100644 --- a/components/sensor.bloomsky/index.html +++ b/components/sensor.bloomsky/index.html @@ -199,12 +199,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -250,6 +256,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.command_line/index.html b/components/sensor.command_line/index.html index 01921f1e84..a097726190 100644 --- a/components/sensor.command_line/index.html +++ b/components/sensor.command_line/index.html @@ -296,12 +296,18 @@ print(response.json()[' Envisalink Sensor +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -347,6 +353,9 @@ print(response.json()[' OctoPrint Sensor +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.cpuspeed/index.html b/components/sensor.cpuspeed/index.html index dac2fa5142..8883a0ef09 100644 --- a/components/sensor.cpuspeed/index.html +++ b/components/sensor.cpuspeed/index.html @@ -168,12 +168,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -219,6 +225,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.deutsche_bahn/index.html b/components/sensor.deutsche_bahn/index.html index 7cc6d66ec3..dac59713a9 100644 --- a/components/sensor.deutsche_bahn/index.html +++ b/components/sensor.deutsche_bahn/index.html @@ -190,12 +190,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -241,6 +247,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.dht/index.html b/components/sensor.dht/index.html index 45a96b5ce3..30ff03ee39 100644 --- a/components/sensor.dht/index.html +++ b/components/sensor.dht/index.html @@ -173,6 +173,9 @@ As this requires access to the GPIO, you will need to run Home Assistant as root
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/sensor.dte_energy_bridge/index.html b/components/sensor.dte_energy_bridge/index.html index 8ecb19a4a0..76877d4586 100644 --- a/components/sensor.dte_energy_bridge/index.html +++ b/components/sensor.dte_energy_bridge/index.html @@ -172,12 +172,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -223,6 +229,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.dweet/index.html b/components/sensor.dweet/index.html index 0d630bff6a..daae400129 100644 --- a/components/sensor.dweet/index.html +++ b/components/sensor.dweet/index.html @@ -223,12 +223,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -274,6 +280,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.ecobee/index.html b/components/sensor.ecobee/index.html index 86dea6abd5..f12067b2e3 100644 --- a/components/sensor.ecobee/index.html +++ b/components/sensor.ecobee/index.html @@ -163,12 +163,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -214,6 +220,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.efergy/index.html b/components/sensor.efergy/index.html index 35e80b6564..d96c4e3a0f 100644 --- a/components/sensor.efergy/index.html +++ b/components/sensor.efergy/index.html @@ -184,12 +184,18 @@ negative number of minutes your timezone is ahead/behind UTC time.
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -235,6 +241,9 @@ negative number of minutes your timezone is ahead/behind UTC time.
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.eliqonline/index.html b/components/sensor.eliqonline/index.html index 9bab4cd776..c0301f9a32 100644 --- a/components/sensor.eliqonline/index.html +++ b/components/sensor.eliqonline/index.html @@ -176,12 +176,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -227,6 +233,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.enocean/index.html b/components/sensor.enocean/index.html index a158756f17..299d8d48fb 100644 --- a/components/sensor.enocean/index.html +++ b/components/sensor.enocean/index.html @@ -189,12 +189,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -240,6 +246,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.envisalink/index.html b/components/sensor.envisalink/index.html index 72ac21d4ca..1d5117f2f0 100644 --- a/components/sensor.envisalink/index.html +++ b/components/sensor.envisalink/index.html @@ -172,12 +172,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -223,6 +229,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.fastdotcom/index.html b/components/sensor.fastdotcom/index.html new file mode 100644 index 0000000000..a2a2bc1b85 --- /dev/null +++ b/components/sensor.fastdotcom/index.html @@ -0,0 +1,388 @@ + + + + + + + + + + Fast.com - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Fast.com +

    +
    +
    + + +

    The fastdotcom sensor component uses the Fast.com web service to measure network bandwidth performance.

    + +

    By default, it will run every hour. The user can change the update frequency in the config by defining the minute, hour, and day for a speedtest to run.

    + +

    To add a Fast.com sensor to your installation, add the following to your configuration.yaml file:

    + +

    Once per hour, on the hour (default):

    + +
    +
    sensor:
    +  platform: fastdotcom 
    +
    +
    +
    + +

    More examples:

    + +

    Every half hour of every day:

    + +
    +
    sensor:
    +  platform: fastdotcom
    +  minute:
    +    - 0
    +    - 30
    +
    +
    +
    +

    Configuration variables:

    + +
      +
    • minute (Optional): Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. Default is 0.
    • +
    • hour (Optional): Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. Default is None.
    • +
    • day (Optional): Specify the day(s) of the month to schedule the speedtest. Use a list for multiple entries. Default is None.
    • +
    + +

    There is also a service named sensor.update_fastdotcom that you can use to run a fast.com speedtest on demand.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.fitbit/index.html b/components/sensor.fitbit/index.html index 4a080e5775..7200569303 100644 --- a/components/sensor.fitbit/index.html +++ b/components/sensor.fitbit/index.html @@ -212,12 +212,18 @@ sleep/timeInBed
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -263,6 +269,9 @@ sleep/timeInBed
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.fixer/index.html b/components/sensor.fixer/index.html index a7062edc54..a2f8b3b431 100644 --- a/components/sensor.fixer/index.html +++ b/components/sensor.fixer/index.html @@ -179,12 +179,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -230,6 +236,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.glances/index.html b/components/sensor.glances/index.html index de533c92b2..4c7a8cb868 100644 --- a/components/sensor.glances/index.html +++ b/components/sensor.glances/index.html @@ -228,12 +228,18 @@ Glances web server started on http://0.0.0.0:61208/
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -279,6 +285,9 @@ Glances web server started on http://0.0.0.0:61208/
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.google_travel_time/index.html b/components/sensor.google_travel_time/index.html index f1fc53d2e2..c1887f437b 100644 --- a/components/sensor.google_travel_time/index.html +++ b/components/sensor.google_travel_time/index.html @@ -239,12 +239,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -290,6 +296,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.gpsd/index.html b/components/sensor.gpsd/index.html new file mode 100644 index 0000000000..d389c5572d --- /dev/null +++ b/components/sensor.gpsd/index.html @@ -0,0 +1,403 @@ + + + + + + + + + + GPSD - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + GPSD +

    +
    +
    + + +

    The gpsd component is using the GPS information collected by gpsd and a GPS receiver.

    + +

    A requirement is that gpsd is installed ($ sudo dnf -y install gpsd or $ sudo apt-get install gpsd). gpsd uses the socket activation feature of systemd on recent Linux distributions for USB receivers. This means that if you plug your GPS receiver in, gpsd is started. Other GPS device may work too, but this was not tested.

    + +
    +
    $ sudo systemctl status gpsdctl@ttyUSB0.service 
    +● gpsdctl@ttyUSB0.service - Manage ttyUSB0 for GPS daemon
    +   Loaded: loaded (/usr/lib/systemd/system/gpsdctl@.service; static; vendor preset: disabled)
    +   Active: active (exited) since Sat 2016-07-16 09:30:33 CEST; 1 day 23h ago
    +  Process: 5303 ExecStart=/bin/sh -c [ "$USBAUTO" = true ] && /usr/sbin/gpsdctl add /dev/%I || : (code=exited, status=0/SUCCESS)
    + Main PID: 5303 (code=exited, status=0/SUCCESS)
    +
    +Jul 16 09:30:33 laptop019 systemd[1]: Starting Manage ttyUSB0 for GPS daemon...
    +Jul 16 09:30:33 laptop019 gpsdctl[5305]: gpsd_control(action=add, arg=/dev/ttyUSB0)
    +Jul 16 09:30:33 laptop019 gpsdctl[5305]: reached a running gpsd
    +
    +
    +
    + +

    To check if your setup is working, connect to port 2947 on the host where gpsd is running with telnet. This may need adjustments to your firewall.

    + +
    +
    +$ telnet localhost 2947
    +Trying 127.0.0.1...
    +Connected to localhost.
    +Escape character is '^]'.
    +{"class":"VERSION","release":"3.15","rev":"3.15-2.fc23","proto_major":3,"proto_minor":11}
    +
    +
    +
    + +

    To setup a GPSD sensor in your installation, add the following to your configuration.yaml file:

    + +
    +
    # Example configuration.yaml entry
    +senosr:
    +  - platform: gpsd
    +    host: 127.0.0.1
    +    port: 2947
    +    name: GPS USB
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • host (Optional): The host where GPSD is running. Defaults to localhost.
    • +
    • port (Optional): The port which GPSD is using. Defaults to 2947.
    • +
    • port (Optional): Friendly name to use for the frontend. Default to GPS.
    • +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.gtfs/index.html b/components/sensor.gtfs/index.html index 840b6c988d..89a8c1bf63 100644 --- a/components/sensor.gtfs/index.html +++ b/components/sensor.gtfs/index.html @@ -198,12 +198,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -249,6 +255,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.homematic/index.html b/components/sensor.homematic/index.html index 27df7cb0f0..f8c0a65c8c 100644 --- a/components/sensor.homematic/index.html +++ b/components/sensor.homematic/index.html @@ -177,12 +177,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -228,6 +234,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.http/index.html b/components/sensor.http/index.html index 03e20bbb2f..a7a78515df 100644 --- a/components/sensor.http/index.html +++ b/components/sensor.http/index.html @@ -214,12 +214,18 @@ You should choose a unique device name (DEVICE_NAME) to avoid clashes with other
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -265,6 +271,9 @@ You should choose a unique device name (DEVICE_NAME) to avoid clashes with other
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.imap/index.html b/components/sensor.imap/index.html index 5868a20985..617b4142e5 100644 --- a/components/sensor.imap/index.html +++ b/components/sensor.imap/index.html @@ -177,12 +177,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -228,6 +234,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.lastfm/index.html b/components/sensor.lastfm/index.html index e2d46fa35f..6b2c7e0d8b 100644 --- a/components/sensor.lastfm/index.html +++ b/components/sensor.lastfm/index.html @@ -183,12 +183,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -234,6 +240,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.loop_energy/index.html b/components/sensor.loop_energy/index.html index 167b1c9c01..2e56cda9f3 100644 --- a/components/sensor.loop_energy/index.html +++ b/components/sensor.loop_energy/index.html @@ -209,12 +209,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -260,6 +266,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.mfi/index.html b/components/sensor.mfi/index.html index 4eaf6a8cf5..0cafa99137 100644 --- a/components/sensor.mfi/index.html +++ b/components/sensor.mfi/index.html @@ -185,12 +185,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -236,6 +242,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.modbus/index.html b/components/sensor.modbus/index.html index 89ae57b06f..b58f0433d2 100644 --- a/components/sensor.modbus/index.html +++ b/components/sensor.modbus/index.html @@ -221,12 +221,18 @@ Each named register will create an integer sensor and each named bit will create
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -272,6 +278,9 @@ Each named register will create an integer sensor and each named bit will create
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.moldindicator/index.html b/components/sensor.moldindicator/index.html index 3d7b259daf..4d81873701 100644 --- a/components/sensor.moldindicator/index.html +++ b/components/sensor.moldindicator/index.html @@ -177,12 +177,18 @@ With the three measured temperatures (in Celsius or Fahrenheit), the calibration
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -228,6 +234,9 @@ With the three measured temperatures (in Celsius or Fahrenheit), the calibration
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.mqtt/index.html b/components/sensor.mqtt/index.html index b5a1245d57..8fe6d975ca 100644 --- a/components/sensor.mqtt/index.html +++ b/components/sensor.mqtt/index.html @@ -275,12 +275,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -326,6 +332,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.mysensors/index.html b/components/sensor.mysensors/index.html index 549f147c9e..ddf01b430d 100644 --- a/components/sensor.mysensors/index.html +++ b/components/sensor.mysensors/index.html @@ -349,12 +349,18 @@ uint16_t lastlux = 0;
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -400,6 +406,9 @@ uint16_t lastlux = 0;
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.nest/index.html b/components/sensor.nest/index.html index c355947728..6136914a22 100644 --- a/components/sensor.nest/index.html +++ b/components/sensor.nest/index.html @@ -219,12 +219,18 @@ You must have the Nest component configured to u
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -270,6 +276,9 @@ You must have the Nest component configured to u
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.neurio_energy/index.html b/components/sensor.neurio_energy/index.html index 2f9c9d29b0..b9e2499e88 100644 --- a/components/sensor.neurio_energy/index.html +++ b/components/sensor.neurio_energy/index.html @@ -177,12 +177,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -228,6 +234,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.nzbget/index.html b/components/sensor.nzbget/index.html index cd03f68e2c..04ed02a18d 100644 --- a/components/sensor.nzbget/index.html +++ b/components/sensor.nzbget/index.html @@ -184,12 +184,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -235,6 +241,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.octoprint/index.html b/components/sensor.octoprint/index.html index 3ca30ff620..44b83221ef 100644 --- a/components/sensor.octoprint/index.html +++ b/components/sensor.octoprint/index.html @@ -190,12 +190,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -241,6 +247,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.ohmconnect/index.html b/components/sensor.ohmconnect/index.html new file mode 100644 index 0000000000..8c686d45e2 --- /dev/null +++ b/components/sensor.ohmconnect/index.html @@ -0,0 +1,377 @@ + + + + + + + + + + OhmConnect - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + OhmConnect +

    +
    +
    + + +

    The ohmconnect sensor will show you the current OhmConnect status for the given OhmConnect ID.

    + +
    +

    OhmConnect monitors real-time conditions on the electricity grid. When dirty and unsustainable power plants turn on, our users receive a notification to save energy. By saving energy at that time, California does not have to turn on additional power plants and California’s energy authorities pay you for that.

    +
    + +

    You can find your OhmConnect ID under “Open Source Projects” on the settings page. It’s the string after the last / in the URL, i.e. for the URL https://login.ohmconnect.com/verify-ohm-hour/AbCd1e your ID is AbCd1e.

    + +
    +
    # Example configuration.yaml entry
    +sensor:
    +  platform: ohmconnect
    +  id: AbCd1e
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • id (Required): Your OhmConnect ID which can be found on the settings page.
    • +
    • name (Optional): A name to display on the sensor. The default is “OhmConnect Status”.
    • +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.onewire/index.html b/components/sensor.onewire/index.html index e72da391a1..a3d36cc0bb 100644 --- a/components/sensor.onewire/index.html +++ b/components/sensor.onewire/index.html @@ -184,12 +184,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -235,6 +241,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.openexchangerates/index.html b/components/sensor.openexchangerates/index.html index 6bcf524d3f..3471b4fdd5 100644 --- a/components/sensor.openexchangerates/index.html +++ b/components/sensor.openexchangerates/index.html @@ -180,12 +180,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -231,6 +237,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.plex/index.html b/components/sensor.plex/index.html index 6c36e446f4..999d6d54bc 100644 --- a/components/sensor.plex/index.html +++ b/components/sensor.plex/index.html @@ -190,12 +190,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -241,6 +247,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.rest/index.html b/components/sensor.rest/index.html index ff29290acb..0e02001930 100644 --- a/components/sensor.rest/index.html +++ b/components/sensor.rest/index.html @@ -270,12 +270,18 @@ Make sure that the URL matches exactly your endpoint or resource.
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -321,6 +327,9 @@ Make sure that the URL matches exactly your endpoint or resource.
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.rfxtrx/index.html b/components/sensor.rfxtrx/index.html index 24e6f49b8b..c648a5ef48 100644 --- a/components/sensor.rfxtrx/index.html +++ b/components/sensor.rfxtrx/index.html @@ -240,12 +240,18 @@ Then you should update your configuration to:

  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -291,6 +297,9 @@ Then you should update your configuration to:

  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.sabnzbd/index.html b/components/sensor.sabnzbd/index.html index 70901cb5e3..a7283f94e7 100644 --- a/components/sensor.sabnzbd/index.html +++ b/components/sensor.sabnzbd/index.html @@ -186,12 +186,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -237,6 +243,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.serial_pm/index.html b/components/sensor.serial_pm/index.html new file mode 100644 index 0000000000..9afe0c5558 --- /dev/null +++ b/components/sensor.serial_pm/index.html @@ -0,0 +1,214 @@ + + + + + + + + + + Particulate matter Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Particulate Matter Sensor +

    +
    +
    + + +

    Particulate matter sensors measure the amount of very small particles in the air. A short introduction how these sensors work can be found on Open Home Automation.

    + +

    Cheap LED based sensors usually use a GPIO interface that is hard to attach to computers. However, there are a lot of laser LED based sensors on the market that use a serial interface and can be connected to your Home Assistant system easily with an USB to serial converter.

    + +

    At this time, the following sensors are supported:

    + +
      +
    • oneair,s3
    • +
    • novafitness,sds021
    • +
    • novafitness,sds011
    • +
    • plantower,pms1003
    • +
    • plantower,pms5003
    • +
    • plantower,pms7003
    • +
    • plantower,pms2003
    • +
    • plantower,pms3003
    • +
    + +

    To use your PM sensor in your installation, add the following to your configuration.yaml file:

    + +
    +
    sensor:
    +  - platform: serial_pm
    +    serial_device: /dev/tty.SLAB_USBtoUART
    +    name: Nova
    +    brand: novafitness,sds011
    +
    +
    +
    + +
      +
    • serial_device (Required): The serial port to use. On *nix systems, it can often be identified by $ ls /dev/tty*
    • +
    • name (Optional): The name displayed in the frontend.
    • +
    • brand (Required): Manufacturer and type of the sensor.
    • +
    + + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.snmp/index.html b/components/sensor.snmp/index.html index 8747703b58..80a3a2c6c1 100644 --- a/components/sensor.snmp/index.html +++ b/components/sensor.snmp/index.html @@ -208,12 +208,18 @@ laLoad.1 = STRING: 0.19
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -259,6 +265,9 @@ laLoad.1 = STRING: 0.19
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.speedtest/index.html b/components/sensor.speedtest/index.html index a662b49979..6eb8444218 100644 --- a/components/sensor.speedtest/index.html +++ b/components/sensor.speedtest/index.html @@ -225,12 +225,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -276,6 +282,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.steam_online/index.html b/components/sensor.steam_online/index.html index 2d8aaaa61c..81afaa6288 100644 --- a/components/sensor.steam_online/index.html +++ b/components/sensor.steam_online/index.html @@ -198,12 +198,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -249,6 +255,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.supervisord/index.html b/components/sensor.supervisord/index.html index 320cfa6d6d..4f459b6dca 100644 --- a/components/sensor.supervisord/index.html +++ b/components/sensor.supervisord/index.html @@ -169,12 +169,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -220,6 +226,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.swiss_hydrological_data/index.html b/components/sensor.swiss_hydrological_data/index.html index efbe922548..172375f442 100644 --- a/components/sensor.swiss_hydrological_data/index.html +++ b/components/sensor.swiss_hydrological_data/index.html @@ -192,12 +192,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -243,6 +249,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.swiss_public_transport/index.html b/components/sensor.swiss_public_transport/index.html index 17a1b42c77..4f0acf3d5d 100644 --- a/components/sensor.swiss_public_transport/index.html +++ b/components/sensor.swiss_public_transport/index.html @@ -180,12 +180,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -231,6 +237,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.systemmonitor/index.html b/components/sensor.systemmonitor/index.html index 47d9259204..40e87bed19 100644 --- a/components/sensor.systemmonitor/index.html +++ b/components/sensor.systemmonitor/index.html @@ -270,12 +270,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -321,6 +327,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.tcp/index.html b/components/sensor.tcp/index.html index 4a14aed857..6c8f79aa40 100644 --- a/components/sensor.tcp/index.html +++ b/components/sensor.tcp/index.html @@ -261,12 +261,18 @@ Escape character is '^]'.
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -312,6 +318,9 @@ Escape character is '^]'.
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.tellduslive/index.html b/components/sensor.tellduslive/index.html index 4c160880d0..b10a982163 100644 --- a/components/sensor.tellduslive/index.html +++ b/components/sensor.tellduslive/index.html @@ -161,12 +161,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -212,6 +218,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.tellstick/index.html b/components/sensor.tellstick/index.html index dc857bb5d9..642ababf58 100644 --- a/components/sensor.tellstick/index.html +++ b/components/sensor.tellstick/index.html @@ -188,12 +188,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -239,6 +245,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.temper/index.html b/components/sensor.temper/index.html index f6d2b763ee..419fb60d85 100644 --- a/components/sensor.temper/index.html +++ b/components/sensor.temper/index.html @@ -158,12 +158,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -209,6 +215,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.template/index.html b/components/sensor.template/index.html index 0fc74ee41d..e828ab320d 100644 --- a/components/sensor.template/index.html +++ b/components/sensor.template/index.html @@ -302,12 +302,18 @@ Please note the blank line to close the multi-line template.
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -353,6 +359,9 @@ Please note the blank line to close the multi-line template.
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.thinkingcleaner/index.html b/components/sensor.thinkingcleaner/index.html index e7aa01982b..283b9e83df 100644 --- a/components/sensor.thinkingcleaner/index.html +++ b/components/sensor.thinkingcleaner/index.html @@ -175,12 +175,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -226,6 +232,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.time_date/index.html b/components/sensor.time_date/index.html index ef1908aac2..6de4548b1b 100644 --- a/components/sensor.time_date/index.html +++ b/components/sensor.time_date/index.html @@ -179,12 +179,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -230,6 +236,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.torque/index.html b/components/sensor.torque/index.html index c5d030e596..f8813f26d9 100644 --- a/components/sensor.torque/index.html +++ b/components/sensor.torque/index.html @@ -196,12 +196,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -247,6 +253,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.transmission/index.html b/components/sensor.transmission/index.html index 829ef85565..3d1cf4aded 100644 --- a/components/sensor.transmission/index.html +++ b/components/sensor.transmission/index.html @@ -209,12 +209,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -260,6 +266,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.twitch/index.html b/components/sensor.twitch/index.html index 025559fc05..77a2172242 100644 --- a/components/sensor.twitch/index.html +++ b/components/sensor.twitch/index.html @@ -176,12 +176,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -227,6 +233,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.uber/index.html b/components/sensor.uber/index.html index bd3cf44494..4fe99ec2f2 100644 --- a/components/sensor.uber/index.html +++ b/components/sensor.uber/index.html @@ -185,12 +185,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -236,6 +242,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.vera/index.html b/components/sensor.vera/index.html index 11b150f0ce..dcec30e98a 100644 --- a/components/sensor.vera/index.html +++ b/components/sensor.vera/index.html @@ -175,12 +175,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -226,6 +232,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.verisure/index.html b/components/sensor.verisure/index.html index 73a9c16993..6713ac59fe 100644 --- a/components/sensor.verisure/index.html +++ b/components/sensor.verisure/index.html @@ -175,12 +175,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -226,6 +232,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.wink/index.html b/components/sensor.wink/index.html index 93312d6b10..4bb0f4dbeb 100644 --- a/components/sensor.wink/index.html +++ b/components/sensor.wink/index.html @@ -178,12 +178,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -229,6 +235,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.worldclock/index.html b/components/sensor.worldclock/index.html index 2829a06fe3..13f6fa4b74 100644 --- a/components/sensor.worldclock/index.html +++ b/components/sensor.worldclock/index.html @@ -182,12 +182,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -233,6 +239,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.zigbee/index.html b/components/sensor.zigbee/index.html index f2ed0f3f1e..8a89ac8ddc 100644 --- a/components/sensor.zigbee/index.html +++ b/components/sensor.zigbee/index.html @@ -235,12 +235,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -286,6 +292,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor.zwave/index.html b/components/sensor.zwave/index.html index 76c8061812..576eeb3d38 100644 --- a/components/sensor.zwave/index.html +++ b/components/sensor.zwave/index.html @@ -181,12 +181,18 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • Fixer.io
  • +
  • + GPSD +
  • Glances
  • @@ -232,6 +238,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • diff --git a/components/sensor/index.html b/components/sensor/index.html index 111fd68756..2ce1cc545e 100644 --- a/components/sensor/index.html +++ b/components/sensor/index.html @@ -156,6 +156,9 @@
  • Envisalink Sensor
  • +
  • + Fast.com +
  • Fitbit
  • @@ -165,6 +168,9 @@
  • Forecast.io
  • +
  • + GPSD +
  • Glances
  • @@ -216,6 +222,9 @@
  • OctoPrint Sensor
  • +
  • + OhmConnect +
  • One wire Sensor
  • @@ -225,6 +234,9 @@
  • OpenWeatherMap
  • +
  • + Particulate matter Sensor +
  • Plex Sensor
  • diff --git a/components/switch.acer_projector/index.html b/components/switch.acer_projector/index.html index 76d1cdab14..7efd2207e5 100644 --- a/components/switch.acer_projector/index.html +++ b/components/switch.acer_projector/index.html @@ -183,6 +183,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.arduino/index.html b/components/switch.arduino/index.html index e9f3f8ab82..f8714d5785 100644 --- a/components/switch.arduino/index.html +++ b/components/switch.arduino/index.html @@ -184,6 +184,9 @@
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/switch.arest/index.html b/components/switch.arest/index.html index c8c5f2911d..cff041a759 100644 --- a/components/switch.arest/index.html +++ b/components/switch.arest/index.html @@ -235,6 +235,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.command_line/index.html b/components/switch.command_line/index.html index 9d301cedf6..3ef6c7381a 100644 --- a/components/switch.command_line/index.html +++ b/components/switch.command_line/index.html @@ -284,6 +284,9 @@ This switch will shutdown your host immediately, there will be no confirmation.
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.dlink/index.html b/components/switch.dlink/index.html index 1df4b0093e..a271fa6e82 100644 --- a/components/switch.dlink/index.html +++ b/components/switch.dlink/index.html @@ -190,6 +190,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.edimax/index.html b/components/switch.edimax/index.html index 42a2ec2a7f..b1590f0223 100644 --- a/components/switch.edimax/index.html +++ b/components/switch.edimax/index.html @@ -180,6 +180,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.enocean/index.html b/components/switch.enocean/index.html index 3a21286711..b17cb15a29 100644 --- a/components/switch.enocean/index.html +++ b/components/switch.enocean/index.html @@ -193,6 +193,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.flux/index.html b/components/switch.flux/index.html index 9c17c65e6d..4accc08dd4 100644 --- a/components/switch.flux/index.html +++ b/components/switch.flux/index.html @@ -113,6 +113,7 @@ sunset_colortemp: 3000 stop_colortemp: 1900 brightness: 200 + mode: xy @@ -128,6 +129,7 @@
  • sunset_colortemp (Optional): The sun set color temperature. Defaults to 3000.
  • stop_colortemp (Optional): The color temperature at the end. Defaults to 1900.
  • brightness (Optional): The brightness of the lights. Calculated with RGB_to_xy by default.
  • +
  • mode (Optional): Select how color temperature is passed to lights. Valid values are ‘xy’, ‘mired’ and ‘kelvin’. Defaults to ‘xy’.
  • @@ -195,6 +197,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.hikvision/index.html b/components/switch.hikvision/index.html index c2b572dc24..3deea28f27 100644 --- a/components/switch.hikvision/index.html +++ b/components/switch.hikvision/index.html @@ -185,6 +185,9 @@ Currently works using default https port only.
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.homematic/index.html b/components/switch.homematic/index.html index fce9f6928f..524f9ccb7f 100644 --- a/components/switch.homematic/index.html +++ b/components/switch.homematic/index.html @@ -181,6 +181,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.knx/index.html b/components/switch.knx/index.html index ff44192f6c..f4bf25eb28 100644 --- a/components/switch.knx/index.html +++ b/components/switch.knx/index.html @@ -172,6 +172,9 @@ For switching actuators that are only controlled by a single group address and c
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/switch.mfi/index.html b/components/switch.mfi/index.html index 863c91cd32..9d92e59752 100644 --- a/components/switch.mfi/index.html +++ b/components/switch.mfi/index.html @@ -188,6 +188,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.modbus/index.html b/components/switch.modbus/index.html index 12b4874686..b77f0960cf 100644 --- a/components/switch.modbus/index.html +++ b/components/switch.modbus/index.html @@ -221,6 +221,9 @@ Each named bit will create a switch.
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.mqtt/index.html b/components/switch.mqtt/index.html index 39d27c4606..7f4501d9b3 100644 --- a/components/switch.mqtt/index.html +++ b/components/switch.mqtt/index.html @@ -237,6 +237,9 @@ Make sure that your topic match exact. some-topic/ and some-t
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.mysensors/index.html b/components/switch.mysensors/index.html index 88f4dc775d..c82b6e3c5d 100644 --- a/components/switch.mysensors/index.html +++ b/components/switch.mysensors/index.html @@ -424,6 +424,9 @@ MyMessage msgSendCode(CHILD_ID, V_LIGHT);
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.mystrom/index.html b/components/switch.mystrom/index.html index 32bce18bfe..a1fcd6f77d 100644 --- a/components/switch.mystrom/index.html +++ b/components/switch.mystrom/index.html @@ -193,6 +193,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.orvibo/index.html b/components/switch.orvibo/index.html index 4402792be4..d91c253e3f 100644 --- a/components/switch.orvibo/index.html +++ b/components/switch.orvibo/index.html @@ -173,6 +173,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.pilight/index.html b/components/switch.pilight/index.html new file mode 100644 index 0000000000..cc641d6ca6 --- /dev/null +++ b/components/switch.pilight/index.html @@ -0,0 +1,331 @@ + + + + + + + + + + Pilight Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Pilight Switch +

    +
    +
    + + +

    A switch platform that issues 433 MHz commands using pilight to turn a 433 MHz device on or off. The pilight HA hub has to be set up.

    + +

    Additionally RF commands can be defined that trigger this switch to turn on and off. This allows you to also use the remote shipped with your 433 MHz switch without mixing up the HA states. You can even define several on/off commands, thus several RF remotes to toggle this switch.

    + +

    To be really sure that HA knows the actual state of your device it is recommended to use the RF remote with codes unknown to any of your 433 MHz devices. Thus you use the remote to trigger this switch to send the correct RF code to the device.

    + +

    To define a pilight switch, add the following lines to your configuration.yaml:

    + +
    +
    # Example configuration.yaml entry
    +switch:
    +  platform: pilight
    +  switches:
    +    Bed light:
    +      on_code:
    +        protocol: intertechno_old  # protocol has to be defined
    +        unit: 3  # these entries are protocol specific and can differ
    +        id: 4    # these entries are protocol specific and can differ
    +        'on': 1  # on has to be in apostrophes to be parsed correctly
    +      off_code:
    +        protocol: intertechno_old   # protocol has to be defined
    +        unit: 3  # these entries are protocol specific and can differ
    +        id: 4  # these entries are protocol specific and can differ
    +        'off': 1  # off has to be in apostrophes to be parsed correctly
    +      on_code_receive:  # optional
    +        protocol: daycom   # protocol has to be defined
    +        systemcode: 14462  # these entries are protocol specific and can differ
    +        unit: 6  # these entries are protocol specific and can differ
    +        id: 34  # these entries are protocol specific and can differ
    +        state: 'on'  # off has to be in apostrophes to be parsed correctly
    +      off_code_receive:  # optional
    +        protocol: daycom   # protocol has to be defined
    +        systemcode: 14462  # these entries are protocol specific and can differ
    +        unit: 6  # these entries are protocol specific and can differ
    +        id: 34  # these entries are protocol specific and can differ
    +        state: 'off'  # on has to be in apostrophes to be parsed correctly
    +
    +
    +
    + +

    Configuration variables:

    + +
      +
    • switches (Required): The array that contains all command switches. +
        +
      • entry (Required): Name of the command switch. Multiple entries are possible. +
          +
        • on_code (Required): The code to turn the device on.
        • +
        • off_code (Required): The code to turn the device off.
        • +
        • on_code_receive (Optional): If given, this command will turn the switch on if it is received by pilight.
        • +
        • off_code_receive (Optional): If given, this command will turn the switch off if it is received by pilight.
        • +
        +
      • +
      +
    • +
    + +

    For possible code entries look at the pilight API. All commands allowed by pilight-send can be used.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/switch.pulseaudio_loopback/index.html b/components/switch.pulseaudio_loopback/index.html index fd50e0b841..2661cc1a98 100644 --- a/components/switch.pulseaudio_loopback/index.html +++ b/components/switch.pulseaudio_loopback/index.html @@ -195,6 +195,9 @@ this component, module-cli-protocol must be loaded on the PulseAudio server.
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.qwikswitch/index.html b/components/switch.qwikswitch/index.html index 3b72fb0a24..b600b00cde 100644 --- a/components/switch.qwikswitch/index.html +++ b/components/switch.qwikswitch/index.html @@ -174,6 +174,9 @@
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.rest/index.html b/components/switch.rest/index.html index c65c7cefd5..b6ebdaf387 100644 --- a/components/switch.rest/index.html +++ b/components/switch.rest/index.html @@ -197,6 +197,9 @@ Make sure that the URL matches exactly your endpoint or resource.
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.rfxtrx/index.html b/components/switch.rfxtrx/index.html index b78f2c4890..b4483b3ca4 100644 --- a/components/switch.rfxtrx/index.html +++ b/components/switch.rfxtrx/index.html @@ -233,6 +233,9 @@ Then you should update your configuration to:

  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.rpi_gpio/index.html b/components/switch.rpi_gpio/index.html index d4753b5008..633282b246 100644 --- a/components/switch.rpi_gpio/index.html +++ b/components/switch.rpi_gpio/index.html @@ -198,6 +198,9 @@ If you are not running Raspbian Jessie, you will need to run Home Assistant as r
  • Orvibo Switch
  • +
  • + Pilight Switch +
  • PulseAudio Loopback Switch
  • diff --git a/components/switch.rpi_rf/index.html b/components/switch.rpi_rf/index.html index a67752aada..f387c3e081 100644 --- a/components/switch.rpi_rf/index.html +++ b/components/switch.rpi_rf/index.html @@ -201,6 +201,9 @@ For more info see the PyPi module description: min_temp
    : 15 max_temp: 21 target_temp: 15 + min_cycle_duration: + # At least one of these must be specified: + days: 2 + hours: 1 + minutes: 10 + seconds: 5 + milliseconds: 20 @@ -114,6 +121,8 @@
  • min_temp (Optional): Set minimum set point available (default: 7)
  • max_temp (Optional): Set maximum set point available (default: 35)
  • target_temp (Required): Set intital target temperature. Failure to set this variable will result in target temperature being set to null on startup.
  • +
  • ac_mode (Optional): Set the switch specified in the heater option to be treated as a cooling device instead of a heating device.
  • +
  • min_cycle_duration (Optional): Set a minimum amount of time that the switch specified in the heater option must be in it’s current state prior to being switched either off or on.
  • diff --git a/components/thermostat.knx/index.html b/components/thermostat.knx/index.html index e9b281a878..3893eeda73 100644 --- a/components/thermostat.knx/index.html +++ b/components/thermostat.knx/index.html @@ -175,6 +175,9 @@
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/thermostat.proliphix/index.html b/components/thermostat.proliphix/index.html index 26896184fe..82b0940f18 100644 --- a/components/thermostat.proliphix/index.html +++ b/components/thermostat.proliphix/index.html @@ -117,10 +117,9 @@
  • password (Required): Password for the thermostat.
  • -

    The Proliphix NT Thermostat series are ethernet connected
    -thermostats. They have a local HTTP interface that is based on get/set
    -of OID values. A complete collection of the API is available in this
    -API documentation.

    +

    The Proliphix NT Thermostat series are ethernet connected thermostats. They have a local HTTP interface that is based on get/set
    +of OID values. A complete collection of the API is available in this API documentation.

    + diff --git a/components/updater/index.html b/components/updater/index.html index 1122dc3f8a..2238fb819e 100644 --- a/components/updater/index.html +++ b/components/updater/index.html @@ -145,6 +145,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/upnp/index.html b/components/upnp/index.html index 80972e2737..cc3b6c93aa 100644 --- a/components/upnp/index.html +++ b/components/upnp/index.html @@ -154,6 +154,9 @@ $ sudo make installpythonmodule3
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/vera/index.html b/components/vera/index.html index e77131b098..09f057b9c8 100644 --- a/components/vera/index.html +++ b/components/vera/index.html @@ -204,6 +204,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/verisure/index.html b/components/verisure/index.html index 812a082b32..490dd0f320 100644 --- a/components/verisure/index.html +++ b/components/verisure/index.html @@ -218,6 +218,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/weblink/index.html b/components/weblink/index.html index b54caa2839..9de6e0cdbb 100644 --- a/components/weblink/index.html +++ b/components/weblink/index.html @@ -154,6 +154,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/wemo/index.html b/components/wemo/index.html index 394a8b03a5..0b8d7dcc61 100644 --- a/components/wemo/index.html +++ b/components/wemo/index.html @@ -193,6 +193,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/wink/index.html b/components/wink/index.html index e2875c784f..9d0b444ae1 100644 --- a/components/wink/index.html +++ b/components/wink/index.html @@ -212,6 +212,9 @@ The Wink hub can only be accessed via the cloud. This means it requires an activ
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/components/zeroconf/index.html b/components/zeroconf/index.html index 4ef717b4f7..be0f7ab49f 100644 --- a/components/zeroconf/index.html +++ b/components/zeroconf/index.html @@ -139,6 +139,9 @@
  • Feedreader
  • +
  • + Foursquare +
  • HTTP
  • diff --git a/components/zigbee/index.html b/components/zigbee/index.html index 87ec8af6ba..b118456a0c 100644 --- a/components/zigbee/index.html +++ b/components/zigbee/index.html @@ -205,6 +205,9 @@ The port may also appear as /dev/ttyACM* if you’re communicating with the ZigB
  • KNX Thermostat
  • +
  • + Particulate matter Sensor +
  • ZigBee
  • diff --git a/components/zwave/index.html b/components/zwave/index.html index 0e58e21fef..470ea0ab98 100644 --- a/components/zwave/index.html +++ b/components/zwave/index.html @@ -188,6 +188,9 @@
  • OctoPrint
  • +
  • + Pilight +
  • QwikSwitch QSUSB Hub
  • diff --git a/cookbook/configuration_yaml_from_bassclarinetl2/index.html b/cookbook/configuration_yaml_from_bassclarinetl2/index.html index 9038345cdc..86f0fb4461 100644 --- a/cookbook/configuration_yaml_from_bassclarinetl2/index.html +++ b/cookbook/configuration_yaml_from_bassclarinetl2/index.html @@ -96,8 +96,8 @@ # Location required to calculate the time the sun rises and sets latitude: 37 longitude: -121 - # C for Celcius, F for Fahrenheit - temperature_unit: F + # 'metric' for Metric, 'imperial' for Imperial + unit_system: imperial # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: America/Los_Angeles customize: diff --git a/cookbook/custom_panel_using_react/index.html b/cookbook/custom_panel_using_react/index.html index c50f8c90d3..8cf9dd50ee 100644 --- a/cookbook/custom_panel_using_react/index.html +++ b/cookbook/custom_panel_using_react/index.html @@ -99,13 +99,18 @@
  • It allows toggling the sidebar.
  • -

    All you need is available as a custom component.

    +

    All you need is available as a custom panel. Download the file and save it in <config dir>/panels/ (you might have to create the directory if it doesn’t exist).

    -

    Create a entry for the panel in your configuration.yaml file to enable it. Set a title if you like.

    +

    Create a entry for the panel in your configuration.yaml file to enable it.

    -
    react_panel:
    -  title: 'React'
    +  
    panel_custom:
    +  - name: react
    +    sidebar_title: TodoMVC
    +    sidebar_icon: mdi:work
    +    url_path: todomvc
    +    config:
    +      title: hello
     
    diff --git a/developers/credits/index.html b/developers/credits/index.html index c57034ee4f..98a8c7dcb1 100644 --- a/developers/credits/index.html +++ b/developers/credits/index.html @@ -118,6 +118,7 @@
  • Ardi Mehist
  • arsaboo
  • Arthur Leonard Andersen
  • +
  • Assaf Inbal
  • Austin
  • Azelphur
  • Bart274
  • @@ -131,6 +132,7 @@
  • Charles Spirakis
  • Chris Mulder
  • Christian Braedstrup
  • +
  • Corban Mailloux
  • coteyr
  • Dale Higgs
  • Dan Cinnamon
  • @@ -142,6 +144,7 @@
  • Dan Smith
  • Dan Sullivan
  • Daren Lord
  • +
  • David-Leon Pohl
  • Dean Camera
  • Dean Galvin
  • Dennis Karpienski
  • @@ -168,9 +171,14 @@
  • Gustav Ahlberg
  • gwendalg
  • happyleavesaoc
  • +
  • Harald Nagel
  • +
  • HBDK
  • Heathbar
  • +
  • Heiko Rothe
  • Hernán
  • +
  • Hugo Dupras
  • Hydreliox
  • +
  • Ian Copp
  • Igor Shults
  • Issac Kelly
  • Jacob Tomlinson
  • @@ -182,6 +190,7 @@
  • Jeffrey Lin
  • Jeffrey Tang
  • Jeff Schroeder
  • +
  • Jesse Newland
  • Joel Asher Friedman
  • Joe McMonagle
  • John Arild Berentsen
  • @@ -208,11 +217,12 @@
  • Magnus Knutas
  • Malte Deiseroth
  • Manoj
  • +
  • Marcelo Moreira de Mello
  • Markus Peter
  • Markus Stenberg
  • Martin Hjelmare
  • Matteo Lampugnani
  • -
  • Matthew Treinish
  • +
  • Matthew Treinish
  • Michaël Arnauts
  • Michael Gilbert
  • Michael Kutý
  • @@ -253,6 +263,7 @@
  • Stefan Jonasson
  • St. John Johnson
  • TangoAlpha
  • +
  • Teagan Glenn
  • Teemu Patja
  • Theb-1
  • Theodor Lindquist
  • diff --git a/developers/frontend_creating_custom_panels/index.html b/developers/frontend_creating_custom_panels/index.html index f80da7f302..7d87b8267f 100644 --- a/developers/frontend_creating_custom_panels/index.html +++ b/developers/frontend_creating_custom_panels/index.html @@ -91,32 +91,9 @@

    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.

    +

    Create a file called hello.html in your /panels/.

    -

    Your component should register the panel. The minimum required code for your component is:

    - -
    -
    """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.

    +

    The hello.html contains the needed building blocks to create the elements inside the view.

    <dom-module id='ha-panel-hello'>
    @@ -171,8 +148,12 @@ Polymer({
     

    Create an entry for the new panel in your configuration.yaml file:

    -
    hello_panel:
    -  who: 'You'
    +  
    panel_custom:
    +  - name: hello_world
    +    sidebar_title: Hello World
    +    sidebar_icon: mdi:hand-pointing-right
    +    url_path: hello_world
    +    webcomponent_path: <config dir>/panels/hello.html
     
    diff --git a/developers/rest_api/index.html b/developers/rest_api/index.html index 700dc3b4f0..ad36386add 100644 --- a/developers/rest_api/index.html +++ b/developers/rest_api/index.html @@ -181,7 +181,7 @@ You can append ?password=YOUR_PASSWORD to any url to log in automat "latitude": 44.1234, "location_name": "Home", "longitude": 5.5678, - "temperature_unit": "\u00b0C", + "unit_system": "metric", "time_zone": "Europe/Zurich", "version": "0.8.0.dev0" } diff --git a/getting-started/basic/index.html b/getting-started/basic/index.html index 5dcb26809f..7502e580f5 100644 --- a/getting-started/basic/index.html +++ b/getting-started/basic/index.html @@ -102,8 +102,8 @@ # Impacts weather/sunrise data (altitude above sea level) elevation: 430 - # C for Celsius, F for Fahrenheit - temperature_unit: C + # 'metric' for Metric, 'imperial' for Imperial + unit_system: metric # Pick yours from here: # http://en.wikipedia.org/wiki/List_of_tz_database_time_zones diff --git a/getting-started/z-wave-controllers/index.html b/getting-started/z-wave-controllers/index.html index c2224b58b3..96f8e094a7 100644 --- a/getting-started/z-wave-controllers/index.html +++ b/getting-started/z-wave-controllers/index.html @@ -125,6 +125,12 @@ Upon first run, the z-wave component will take time to initialize entities and e     + + ZWave.me UZB1 + ✓ +   +   + diff --git a/getting-started/z-wave-device-specific/index.html b/getting-started/z-wave-device-specific/index.html index e9e84686a0..2886032b2c 100644 --- a/getting-started/z-wave-device-specific/index.html +++ b/getting-started/z-wave-device-specific/index.html @@ -101,44 +101,6 @@ The option is commented out by default in options.xml and is a defa It is best to pair these devices in Open Zwave Control Panel or other Zwave tool that can show you logs while pairing. Test the device before you save the configuration.
    Make sure you copy the newly saved zwcfg_[home_id].xmlinto your HomeAssistant config directory.

    -
    Event basic_level for automation
    -

    HomeAssistant will trigger a event when command_class_basic changes value on a node.
    -This can be virtually anything, so tests have to be made to determine what value equals what.
    -You can use this for automations.

    - -

    Example:

    - -
    -
     - alias: Minimote Button Pressed
    -   trigger:
    -     platform: event
    -     event_type: zwave.node_event
    -     event_data:
    -       object_id: aeon_labs_minimote_1
    -       basic_level: 255
    -
    -
    -
    - -
    Event scene_id for automation
    -

    HomeAssistant will trigger a event when a scene is activated by a node in the zwave network.
    -This can be a press of a button, so tests have to be made to determine what scene_id equals what.
    -You can use this for automations.

    - -

    Example:

    - -
    -
     - alias: Minimote Button 1 Pressed
    -   trigger:
    -     platform: event
    -     event_type: zwave.scene_activated
    -     event_data:
    -       object_id: aeon_labs_minimote_1
    -      scene_id: 1
    -
    -
    -
    -
    Aeon Minimote

    Here’s a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into automation.yaml.

    diff --git a/getting-started/z-wave/index.html b/getting-started/z-wave/index.html index ed7e4b0d06..efdce69434 100644 --- a/getting-started/z-wave/index.html +++ b/getting-started/z-wave/index.html @@ -190,7 +190,77 @@ Depending on what’s plugged into your USB ports, the name found above may chan

    Events

    -

    Some devices can also trigger scene activation events, which can be used in automation scripts (for example the press of a button on a wall switch):

    +

    zwave.network_complete
    +HomeAssistant will trigger a event when the zwave network is complete. Meaning all of the nodes on the network have been queried. This can take quite som time, depending on wakeup intervals on the battery powered devices on the network.

    + +
    +
     - alias: ZWave network is complete
    +   trigger:
    +     platform: event
    +     event_type: zwave.network_complete
    +
    +
    +
    + +

    zwave.network_ready
    +HomeAssistant will trigger a event when the zwave network is ready for use. Between zwave.network_start and zwave.network_ready HomeAssistant will feel sluggish when trying to send commands to zwave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered all awake nodes have been queried and sleeping nodes will be queried when they awake.

    + +
    +
     - alias: ZWave network is ready
    +   trigger:
    +     platform: event
    +     event_type: zwave.network_ready
    +
    +
    +
    + +

    zwave.network_start
    +HomeAssistant will trigger a event when the zwave network is set up to be started.

    + +
    +
     - alias: ZWave network is starting
    +   trigger:
    +     platform: event
    +     event_type: zwave.network_start
    +
    +
    +
    + +

    zwave.network_stop
    +HomeAssistant will trigger a event when the zwave network stopping.

    + +
    +
     - alias: ZWave network is stopping
    +   trigger:
    +     platform: event
    +     event_type: zwave.network_start
    +
    +
    +
    + +

    zwave.node_event
    +HomeAssistant will trigger a event when command_class_basic changes value on a node.
    +This can be virtually anything, so tests have to be made to determine what value equals what.
    +You can use this for automations.

    + +

    Example:

    + +
    +
     - alias: Minimote Button Pressed
    +   trigger:
    +     platform: event
    +     event_type: zwave.node_event
    +     event_data:
    +       object_id: aeon_labs_minimote_1
    +       basic_level: 255
    +
    +
    +
    + +

    The object_id and basic_level of all triggered events can be seen in the console output.

    + +

    zwave.scene_activated
    +Some devices can also trigger scene activation events, which can be used in automation scripts (for example the press of a button on a wall switch):

    # Example configuration.yaml automation entry
    @@ -200,13 +270,13 @@ Depending on what’s plugged into your USB ports, the name found above may chan
           platform: event
           event_type: zwave.scene_activated
           event_data:
    -        entity_id: zwaveme_zme_wallcs_secure_wall_controller_8
    +        object_id: zwaveme_zme_wallcs_secure_wall_controller_8
             scene_id: 11
     
    -

    The entity_id and scene_id of all triggered events can be seen in the console output.

    +

    The object_id and scene_id of all triggered events can be seen in the console output.

    Services

    @@ -225,13 +295,21 @@ Depending on what’s plugged into your USB ports, the name found above may chan Put the zwave controller in inclusion mode. Allows one to add a new device to the zwave network. - remove_node - Put the zwave controller in exclusion mode. Allows one to remove a device from the zwave network. + add_node_secure + Put the zwave controller in secure inclusion mode. Allows one to add a new device with secure communications to the zwave network. + + + cancel_command + Cancels a running zwave command. If you have started a add_node or remove_node command, and decides you are not going to do it, then this must be used to stop the inclusion/exclusion command. heal_network Tells the controller to “heal” the network. Bascially asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. + + remove_node + Put the zwave controller in exclusion mode. Allows one to remove a device from the zwave network. + soft_reset Tells the controller to do a “soft reset”. This is not supposed to lose any data, but different controllers can behave differently to a “soft reset” command. diff --git a/images/supported_brands/fastdotcom.png b/images/supported_brands/fastdotcom.png new file mode 100644 index 0000000000000000000000000000000000000000..537ce9180cf309713233746651e82a0d6d7d2a37 GIT binary patch literal 17929 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 TxV4nZ00000NkvXXu0mjfeLDn0 literal 0 HcmV?d00001 diff --git a/images/supported_brands/ffmpeg.png b/images/supported_brands/ffmpeg.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f78f5b51754d876b2760283d54e0ec35c328cd GIT binary patch literal 17973 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 UQ?XPA{vb$BT1l!_!X)(n06ryC9smFU literal 0 HcmV?d00001 diff --git a/images/supported_brands/ohmconnect.png b/images/supported_brands/ohmconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..e3aaf1b38bd1d69dae654d97a630887f800e183c GIT binary patch literal 3160 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 yvM9azkZusEIbsM12-4l% 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 Yvc@BU9j_iana2TNd3Y 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index e1a6d486d2..b7785b32c5 100644 --- a/index.html +++ b/index.html @@ -115,11 +115,11 @@ Home Assistant is an open-source home automation platform running on Python 3. T
    diff --git a/sitemap.xml b/sitemap.xml index 34ad5fa05e..9e40d41db5 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,5 +1,9 @@ + + https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/ + 2016-08-13T19:00:00+00:00 + https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/ 2016-08-07T19:36:00+00:00 @@ -815,6 +819,9 @@ https://home-assistant.io/components/switch.command_line/ + + https://home-assistant.io/components/switch.pilight/ + https://home-assistant.io/components/switch.edimax/ @@ -878,6 +885,12 @@ https://home-assistant.io/components/mqtt/ + + https://home-assistant.io/components/pilight/ + + + https://home-assistant.io/components/panel_custom/ + https://home-assistant.io/components/media_player.squeezebox/ @@ -1676,6 +1689,9 @@ https://home-assistant.io/components/switch.tplink/ + + https://home-assistant.io/components/sensor.gpsd/ + https://home-assistant.io/components/media_player.directv/ @@ -1688,6 +1704,24 @@ https://home-assistant.io/components/media_player.mpchc/ + + https://home-assistant.io/components/sensor.ohmconnect/ + + + https://home-assistant.io/components/foursquare/ + + + https://home-assistant.io/components/light.mqtt_json/ + + + https://home-assistant.io/components/sensor.fastdotcom/ + + + https://home-assistant.io/components/sensor.serial_pm/ + + + https://home-assistant.io/components/camera.ffmpeg/ + https://home-assistant.io/cookbook/automation_for_rainy_days/ @@ -2042,64 +2076,67 @@ https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/ + + https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/ + https://home-assistant.io/demo/frontend.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/index.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-event.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-info.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-service.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-state.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-template.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-history.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-iframe.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-logbook.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/demo/panels/ha-panel-map.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/googlef4f3693c209fe788.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 https://home-assistant.io/static/mdi-demo.html - 2016-08-13T15:58:28+00:00 + 2016-08-13T19:21:34+00:00 diff --git a/topics/platform_options/index.html b/topics/platform_options/index.html index 2fc5867429..0ed719a93a 100644 --- a/topics/platform_options/index.html +++ b/topics/platform_options/index.html @@ -142,7 +142,9 @@
  • +
    + -

    Recent Posts

    diff --git a/topics/secrets/index.html b/topics/secrets/index.html index 40d7a5e782..f0753bd252 100644 --- a/topics/secrets/index.html +++ b/topics/secrets/index.html @@ -124,17 +124,17 @@ -

    Python Keyring

    +

    Storing passwords in a keyring managed by your OS

    -

    Using Keyring is an alternative way to secrets.yaml but requires that keyring is installed (incl. its command-line tools). This can be done with:

    +

    Using Keyring is an alternative way to secrets.yaml. They can be managed from the command line via the keyring script.

    -
    $ pip3 install keyring
    +  
    $ hass --script keyring --help
     
    -

    Replace your password or API key with !secret and an identifier in configuration.yaml file.

    +

    To store a password in keyring, replace your password or API key with !secret and an identifier in configuration.yaml file.

    http:
    @@ -143,28 +143,10 @@
     
    -

    Create an entry in your keyring. The service (SERVICE) is homeassistant and the identifier is the USERNAME in the keyring context.

    +

    Create an entry in your keyring.

    -
    $ keyring set homeassistant http_password
    -Password for 'http_password' in 'homeassistant': 
    -Please set a password for your new keyring: 
    -Please confirm the password: 
    -
    -
    -
    - -

    If the command-line tool keyring is not available, launch python3 and do the process manually.

    - -
    -
    >>> import keyring
    ->>> keyring.set_password("homeassistant", "http_password", "12345")
    -Please set a password for your new keyring: 
    -Please confirm the password: 
    ->>> keyring.get_password("homeassistant", "http_password")
    -'12345'
    ->>> keyring.get_keyring()
    -<EncryptedKeyring at /home/your_user/.local/share/python_keyring/crypted_pass.cfg>
    +  
    $ hass --script keyring set http_password
     
    @@ -174,7 +156,7 @@ Please confirm the password:
    $ hass
     Config directory: /home/fab/.homeassistant
    -Please enter password for encrypted keyring: 
    +Please enter password for encrypted keyring:
     
    @@ -184,7 +166,6 @@ Please enter password for encrypted keyring:

    - diff --git a/topics/splitting_configuration/index.html b/topics/splitting_configuration/index.html index e4f67074c7..f42eeccdb0 100644 --- a/topics/splitting_configuration/index.html +++ b/topics/splitting_configuration/index.html @@ -108,8 +108,8 @@ # Location required to calculate the time the sun rises and sets latitude: 37 longitude: -121 - # C for Celsius, F for Fahrenheit - temperature_unit: F + # 'metric' for Metric, 'imperial' for Imperial + unit_system: imperial # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: America/Los_Angeles customize: !include customize.yaml diff --git a/topics/templating/index.html b/topics/templating/index.html index 76649c1e0a..a04c09ca7f 100644 --- a/topics/templating/index.html +++ b/topics/templating/index.html @@ -102,12 +102,12 @@

    Building templates

    -

    Templating in Home Assistant is powered by the Jinja2 templating engine. This means that we are using their syntax and make some custom Home Assistant variables available to templates during rendering. We will not go over the basics of the syntax, as Jinja2 does a lot better job at this in their Jinja2 documentation.

    +

    Templating in Home Assistant is powered by the Jinja2 templating engine. This means that we are using their syntax and make some custom Home Assistant variables available to templates during rendering. We will not go over the basics of the syntax, as Jinja2 does a lot better job at this in their Jinja2 documentation.

    The frontend has a template editor developer tool to help develop and debug templates. @@ -131,6 +131,14 @@ The frontend has a template editor developer tool to help develop and debug temp

    +

    Jinja2 supports a width variety of operations:

    + + +

    Home Assistant template extensions

    Home Assistant adds extensions to allow templates to access all of the current states:

    @@ -149,7 +157,6 @@ The frontend has a template editor developer tool to help develop and debug temp
  • 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.
  • @@ -199,7 +206,9 @@ The frontend has a template editor developer tool to help develop and debug temp Paulus is at {{ states('device_tracker.paulus')) }}. {% endif %} -{{ states.sensor.temperature | multiply(10) | round(2) }} +{{ states.sensor.temperature | float + 1 }} + +{{ states.sensor.temperature | float * 10 | round(2) }} {% if states('sensor.temperature') | float > 20 %} It is warm! @@ -300,9 +309,9 @@ Closest to an entity: {{ closest(states.zone.school, 'group.children') }} # Format output {{ "%+.1f" | value_json }} -# Calculations -{{ value_json | multiply(1024) }} -{{ value_json.used | multiply(0.0001) | round(0) }} +# Math +{{ value_json | float * 1024 }} +{{ float(value_json) * (2**10) }} # Timestamps {{ value_json.tst | timestamp_local }}