From d2f4fcce632c4bbb11f5081497f305ff1632b7f0 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Apr 2019 10:48:45 -0700 Subject: [PATCH 01/50] Add draft notes --- _config.yml | 6 +- source/_posts/2019-04-24-release-92.markdown | 841 +++++++++++++++++++ 2 files changed, 844 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2019-04-24-release-92.markdown diff --git a/_config.yml b/_config.yml index a15c04365db..eca36af3511 100644 --- a/_config.yml +++ b/_config.yml @@ -138,9 +138,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 91 -current_patch_version: 4 -date_released: 2019-04-16 +current_minor_version: 92 +current_patch_version: 0 +date_released: 2019-04-24 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown new file mode 100644 index 00000000000..b19f86e7560 --- /dev/null +++ b/source/_posts/2019-04-24-release-92.markdown @@ -0,0 +1,841 @@ +--- +layout: post +title: "0.92: TBD" +description: "TBD" +date: 2019-04-17 00:11:03 +date_formatted: "April 24, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-04-release-92/components.png +--- + +- [Introducing integrations](https://developers.home-assistant.io/blog/2019/04/12/new-integration-structure.html) +- Lovelace can stream cameras (pending docs). Add `camera_view: live` to picture glance, picture entity, picture elements. Warn, can use a lot of data. We are exploring being able to add a mode to only show it on desktop. +- If you are still receiving a message that your configuration contains extra keys, this is the last release that this will be a warning. In the next release this will be an error and the integration won't set up. + + +## {% linkable_title New Integrations %} + +- Add N26 component ([@markusressel] - [#22684]) ([n26 docs]) (new-integration) (new-platform) +- Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) +- Camera component for BOM integration ([@maddenp] - [#22816]) ([bomradarcam docs]) (new-integration) (new-platform) +- Instituto Geográfico Nacional Sismología (Earthquakes) Feed platform ([@exxamalte] - [#22696]) ([ign_sismologia docs]) (new-integration) (new-platform) +- Rename google/tts.py to google_translate/tts.py ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (breaking change) (new-integration) + +## {% linkable_title New Platforms %} + +- Add LCN binary_sensor component ([@alengwenus] - [#22341]) ([lcn docs]) (new-platform) +- Ampio Smog Air Quality Sensor ([@kstaniek] - [#21152]) ([air_quality docs]) (new-platform) +- Rebrand Cisco Spark notify to be Cisco Webex Teams ([@fbradyirl] - [#21938]) ([cisco_webex_teams docs]) (new-platform) +- Add N26 component ([@markusressel] - [#22684]) ([n26 docs]) (new-integration) (new-platform) +- Add OASA Telematics greek public transport sensor component ([@panosmz] - [#22196]) ([oasa_telematics docs]) (new-platform) +- Initial Fibaro HC Climate support ([@pbalogh77] - [#20256]) ([fibaro docs]) (new-platform) +- Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) +- Camera component for BOM integration ([@maddenp] - [#22816]) ([bomradarcam docs]) (new-integration) (new-platform) +- Add amcrest binary_sensors ([@pnbruckner] - [#22703]) ([amcrest docs]) (new-platform) +- Binary sensors for netgear_lte ([@amelchio] - [#22902]) ([netgear_lte docs]) (new-platform) +- Add ESPHome climate support ([@OttoWinter] - [#22859]) ([esphome docs]) (new-platform) +- Instituto Geográfico Nacional Sismología (Earthquakes) Feed platform ([@exxamalte] - [#22696]) ([ign_sismologia docs]) (new-integration) (new-platform) +- Add Satel_integra switchable outputs and multiple partitions ([@c-soft] - [#21992]) ([satel_integra docs]) (breaking change) (new-platform) +- Add support for Stiebel Eltron heat pumps ([@fucm] - [#21199]) ([stiebel_eltron docs]) (new-platform) +- Add basic Supla cover support ([@mwegrzynek] - [#22133]) ([supla docs]) (new-platform) +- Simplify esphome ([@OttoWinter] - [#22868]) ([esphome docs]) (new-platform) +- Genius hub ([@GeoffAtHome] - [#21598]) ([geniushub docs]) (new-platform) +- Added epson workforce component ([@ThaStealth] - [#23144]) ([epsonworkforce docs]) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Fix lightwave config validation ([@amelchio] - [#22576]) ([lightwave docs]) (breaking change) +- Amcrest: Add on/off support & attributes. Bump amcrest to 1.3.0 ([@pnbruckner] - [#22418]) ([amcrest docs]) (breaking change) +- Remove deprecated Insteon components ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) (breaking change) +- Logi Circle public API refactor and config flow ([@evanjd] - [#20624]) ([logi_circle docs]) (breaking change) +- Remove introduction component ([@balloob] - [#22944]) ([introduction docs]) (breaking change) +- Check for supported features in media_player services ([@andrewsayre] - [#22878]) ([media_player docs]) (breaking change) +- Google Assistant: Migrate light setting trait to use HSV color spectrum ([@balloob] - [#22980]) ([google_assistant docs]) (breaking change) +- Load requirements and dependencies from manifests. Fallback to current `REQUIREMENTS` and `DEPENDENCIES` ([@rohankapoorcom] - [#22717]) (breaking change) +- Add Satel_integra switchable outputs and multiple partitions ([@c-soft] - [#21992]) ([satel_integra docs]) (breaking change) (new-platform) +- Deprecate implicit state_topic for MQTT discovery ([@emontnemery] - [#22998]) ([mqtt docs]) (breaking change) +- Handle missing 'serialno' of Android TV ([@JeffLIrion] - [#22996]) ([androidtv docs]) (breaking change) +- Rename google/tts.py to google_translate/tts.py ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (breaking change) (new-integration) +- Changed scene unique IDs ([@pbalogh77] - [#22987]) ([fibaro docs]) (breaking change) + +## {% linkable_title All changes %} + +- Add LCN binary_sensor component ([@alengwenus] - [#22341]) ([lcn docs]) (new-platform) +- Add HEOS media player component ([@easink] - [#21721]) +- Add google calendar max_results config option ([@yosilevy] - [#21874]) ([google docs]) +- Fix .coveragerc from merge/rebase ([@andrewsayre] - [#22516]) +- Speed up status updating in SimpliSafe ([@bachya] - [#22506]) ([simplisafe docs]) +- Axis component reflect device availability ([@Kane610] - [#22401]) ([axis docs]) +- throw `PlatformNotReady` if unable to connect ([@aav7fl] - [#22515]) ([androidtv docs]) +- Ring camera improvements ([@Yarikx] - [#22526]) ([ring docs]) +- upgrade pylinky to 0.3.3 ([@royto] - [#22544]) ([linky docs]) +- Move core services.yaml file to Home Assistant integration ([@balloob] - [#22489]) +- Change HEOS component library and add basic config flow ([@andrewsayre] - [#22517]) ([heos docs]) +- Add command_template and value_template for MQTT alarm ([@JumpMaster] - [#21438]) ([mqtt docs]) +- Add table with netgear_lte sensor units ([@amelchio] - [#22508]) ([netgear_lte docs]) +- Add more HomeKit device enumeration tests ([@Jc2k] - [#22194]) +- Added support for transitions for nanoleaf light ([@Oro] - [#22192]) ([nanoleaf docs]) +- Add Heos config flow ([@andrewsayre] - [#22554]) ([heos docs]) +- Improve handling of audio groups ([@emontnemery] - [#22396]) ([cast docs]) +- Prevent toogle to false at restart of ADS platforms ([@carstenschroeder] - [#22522]) ([ads docs]) +- Ampio Smog Air Quality Sensor ([@kstaniek] - [#21152]) ([air_quality docs]) (new-platform) +- Bump pyloopenergy library to 0.1.2 ([@pavoni] - [#22561]) ([loopenergy docs]) +- Forward media control to playing group ([@emontnemery] - [#22566]) ([cast docs]) +- Turn light off if brightness is 0 ([@emontnemery] - [#22400]) ([light docs]) +- Ignore flaky test ([@awarecan] - [#22563]) +- Fix typo in light/__init__.py ([@OleksandrBerchenko] - [#22581]) ([light docs]) +- Fix lightwave config validation ([@amelchio] - [#22576]) ([lightwave docs]) (breaking change) +- Rewrite Osram Lightify component ([@OleksandrBerchenko] - [#22184]) ([osramlightify docs]) +- Clean up homematicip cloud ([@SukramJ] - [#22589]) ([homematicip_cloud docs]) +- Retrying connecting Influxdb at setup ([@scornelissen85] - [#22567]) ([influxdb docs]) +- Fix gtfs typing and logger issues ([@renemarc] - [#22572]) ([gtfs docs]) +- Add permission checking to all RainMachine services ([@bachya] - [#22399]) ([rainmachine docs]) +- Refactor of ADS integration and introduce ADSEntity ([@carstenschroeder] - [#22583]) ([ads docs]) +- Fixed brightness reducing after each light change ([@N1nja98] - [#22606]) ([zengge docs]) +- Add netgear_lte connection sensors ([@amelchio] - [#22558]) ([netgear_lte docs]) +- Only allow admins to enable remote connection ([@balloob] - [#22609]) ([cloud docs]) +- Cloudhooks for webhook config flows ([@balloob] - [#22611]) ([dialogflow docs]) ([geofency docs]) ([gpslogger docs]) ([ifttt docs]) ([locative docs]) ([mailgun docs]) ([twilio docs]) +- Add source selection to Heos component ([@andrewsayre] - [#22592]) ([heos docs]) +- Make platform setup a coroutine ([@fredrike] - [#22620]) ([daikin docs]) ([tellduslive docs]) +- Trend binary sensor check for state unavailable ([@VDRainer] - [#22621]) ([trend docs]) +- Fix xiaomi vacuum resume functionality ([@aprosvetova] - [#22626]) ([xiaomi_miio docs]) +- Fix GTFS variable type mismatch ([@renemarc] - [#22624]) ([gtfs docs]) +- Add support for Dyson Purecool 2018 Air Purifiers models TP04 and DP04 ([@etheralm] - [#22215]) ([dyson docs]) +- Amcrest: Add on/off support & attributes. Bump amcrest to 1.3.0 ([@pnbruckner] - [#22418]) ([amcrest docs]) (breaking change) +- change library to georss_generic_client ([@exxamalte] - [#22615]) ([geo_rss_events docs]) +- Add codecov ([@awarecan] - [#22649]) +- Qwikswitch fix listen loop ([@kellerza] - [#22600]) ([qwikswitch docs]) +- Improve evohome exception handling and fix bugs ([@zxdavb] - [#22140]) ([evohome docs]) ([honeywell docs]) +- Don't force updates on ZHA Electrical Measurement sensor. ([@Adminiuga] - [#22647]) ([zha docs]) +- Fix pytest durations parameter ([@cgtobi] - [#22658]) +- Admin service to automatically add empty schema ([@balloob] - [#22637]) ([cloud docs]) +- Ignore code coverages for component without test ([@awarecan] - [#22653]) +- Add battery sensor to Homematic IP ([@SukramJ] - [#22630]) ([homematicip_cloud docs]) +- Axis discovery updates host address ([@Kane610] - [#22632]) ([axis docs]) +- Add missing properties and scenes support to Osram Lightify ([@OleksandrBerchenko] - [#22597]) ([osramlightify docs]) +- Add color support to emulated hue ([@techfreek] - [#19590]) ([emulated_hue docs]) +- Add discovery support to HEOS component ([@andrewsayre] - [#22652]) ([discovery docs]) ([heos docs]) +- Person schema for merge_packages #21307 ([@kellerza] - [#21703]) ([person docs]) +- Cast: Fix next/previous track ([@emontnemery] - [#22634]) ([cast docs]) +- Fix regression from PR #22396 ([@emontnemery] - [#22661]) ([cast docs]) +- Person tests - split from #21703 ([@kellerza] - [#22663]) +- Rebrand Cisco Spark notify to be Cisco Webex Teams ([@fbradyirl] - [#21938]) ([cisco_webex_teams docs]) (new-platform) +- Update uvloop to 0.12.2 ([@pvizeli] - [#22681]) +- Shutdown ZHAGateway on hass closing. ([@Adminiuga] - [#22646]) ([zha docs]) +- Clean up docstrings ([@cgtobi] - [#22679]) +- Fix trend binary sensor and tests ([@awarecan] - [#22686]) ([trend docs]) +- Fix citybikes ([@MartinHjelmare] - [#22683]) ([citybikes docs]) +- Google Assistant: Add support for open/close binary sensors ([@balloob] - [#22674]) ([binary_sensor docs]) ([google_assistant docs]) +- Update light/services.yaml ([@emontnemery] - [#22662]) +- Fix connection loss issues for Harmony ([@ehendrix23] - [#22687]) ([harmony docs]) +- Remove aws_* notify platforms ([@awarecan] - [#22698]) ([aws_lambda docs]) ([aws_sns docs]) ([aws_sqs docs]) +- Add manifests ([@balloob] - [#22699]) +- Add a .codecov.yml to control coverage statuses and enable notifications ([@robbiet480] - [#22707]) +- Raise ConfigEntryNotReady for MQTT connection exception ([@aav7fl] - [#22540]) +- Add device_class_power to sensor ([@SukramJ] - [#22691]) ([homematicip_cloud docs]) ([sensor docs]) +- Remove all config deprecations invalidated in 0.91 ([@rohankapoorcom] - [#22704]) +- Validate manifests in CI ([@balloob] - [#22708]) +- Generate codeowners based on manifests ([@balloob] - [#22705]) +- Remove deprecated Insteon components ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) (breaking change) +- Allow users to set encoding of mikrotik connection ([@robbiet480] - [#22715]) ([mikrotik docs]) +- Only post coverage comment if coverage changes ([@MartinHjelmare] - [#22721]) +- Add 10 additional language options to DarkSky ([@VirtualL] - [#22719]) ([darksky docs]) +- Add N26 component ([@markusressel] - [#22684]) ([n26 docs]) (new-integration) (new-platform) +- Bump pywebpush to latest 1.9.2 ([@perosb] - [#22737]) ([html5 docs]) +- Support multiple deCONZ gateways ([@Kane610] - [#22449]) ([deconz docs]) +- add device class signal strength ([@SukramJ] - [#22738]) ([sensor docs]) +- Update PR template requirements to point to the manifest ([@rohankapoorcom] - [#22751]) +- Generate requirements_* from manifests ([@rohankapoorcom] - [#22718]) +- Add deprecation warning to embedded broker ([@emontnemery] - [#22753]) ([mqtt docs]) +- fix flaky test ([@hunterjm] - [#22748]) +- Improve exception handling in ADS integration ([@carstenschroeder] - [#22627]) ([ads docs]) +- Add google hangouts manual authentication option ([@teliov] - [#22158]) ([hangouts docs]) +- Axis - support stream ([@Kane610] - [#22593]) ([axis docs]) +- update core dependencies due to pywebpush update ([@perosb] - [#22767]) +- deCONZ multiple gateways fixup ([@Kane610] - [#22774]) ([deconz docs]) +- Update homeassistant-pyozw 0.1.4 ([@pvizeli] - [#22794]) ([zwave docs]) +- Add OASA Telematics greek public transport sensor component ([@panosmz] - [#22196]) ([oasa_telematics docs]) (new-platform) +- Remove pycryptodome requirement for Android TV ([@JeffLIrion] - [#22552]) ([androidtv docs]) +- Update version of python_awair to 0.0.4 ([@ahayworth] - [#22809]) ([awair docs]) +- Remove unused group status ([@emontnemery] - [#22791]) ([cast docs]) +- Raise severity of MQTT callback deprecation warning ([@emontnemery] - [#22792]) ([mqtt docs]) +- Bump raincloud dependency to fix broken integration: Fixes #22422 ([@vanstinator] - [#22805]) ([raincloud docs]) +- Add HmIP-SMO to Homematic IP ([@SukramJ] - [#22802]) ([homematicip_cloud docs]) +- Sort configuration schema. ([@emontnemery] - [#22835]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22831]) ([mqtt docs]) +- Optimize yeelight signal handling ([@zewelor] - [#22806]) ([yeelight docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22828]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22833]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22836]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22837]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22838]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22829]) ([mqtt docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22830]) ([mqtt docs]) +- Fix glances docker container errors ([@roblandry] - [#22846]) ([glances docs]) +- Fix flaky test ([@awarecan] - [#22850]) +- Bump aioambient to 0.3.0 ([@bachya] - [#22855]) ([ambient_station docs]) +- get temp and color for light during init and poll ([@dmulcahey] - [#22847]) ([zha docs]) +- Fix manifest codeowners ([@cdce8p] - [#22871]) ([cover docs]) ([demo docs]) +- Added REQUIREMENTS back to Ambient ([@bachya] - [#22875]) ([ambient_station docs]) +- Minor sensor fixes ([@robbiet480] - [#22884]) ([mobile_app docs]) +- add myself as codeowner ([@fbradyirl] - [#22885]) ([cisco_ios docs]) ([cisco_mobility_express docs]) ([cisco_webex_teams docs]) ([ciscospark docs]) ([enigma2 docs]) ([hikvisioncam docs]) ([luci docs]) +- Bump pypi module version for enigma2 ([@fbradyirl] - [#22886]) +- Add zwave network key validator ([@cgtobi] - [#22785]) ([zwave docs]) +- force_update=False (not None) ([@akasma74] - [#22867]) ([rflink docs]) +- Stream support for Doorbird component ([@oblogic7] - [#22876]) ([doorbird docs]) +- Add MQTT climate two-point target temperature support ([@OttoWinter] - [#22860]) ([mqtt docs]) +- Update harmony manifest to match REQUIREMENTS in module ([@rohankapoorcom] - [#22826]) ([harmony docs]) +- Add ESPHome Cover position/tilt support ([@OttoWinter] - [#22858]) ([esphome docs]) +- Use dict[key] for required config keys and keys with default values. ([@emontnemery] - [#22832]) ([mqtt docs]) +- fix aiohttp ServerDisconnectedError in Daikin ([@fredrike] - [#22880]) ([daikin docs]) +- Fix Sonos handling of unsupported favorites ([@amelchio] - [#22906]) ([sonos docs]) +- Fix HEOS discovery could result in multiple config entries ([@andrewsayre] - [#22903]) ([heos docs]) +- Initial Fibaro HC Climate support ([@pbalogh77] - [#20256]) ([fibaro docs]) (new-platform) +- Test fixes ([@balloob] - [#22911]) +- Stream Timestamp Fixes ([@hunterjm] - [#22912]) ([stream docs]) +- Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) +- Fix ZHA Light color conversion. ([@Adminiuga] - [#22909]) ([zha docs]) +- Added features to Concord232 Alarm Panel ([@AZDane] - [#22892]) ([concord232 docs]) +- Camera component for BOM integration ([@maddenp] - [#22816]) ([bomradarcam docs]) (new-integration) (new-platform) +- Add 'Assumed State' property to Somfy MyLink covers ([@bendews] - [#22922]) ([somfy_mylink docs]) +- Logi Circle public API refactor and config flow ([@evanjd] - [#20624]) ([logi_circle docs]) (breaking change) +- Add amcrest binary_sensors ([@pnbruckner] - [#22703]) ([amcrest docs]) (new-platform) +- Add support for when device is not logged in to HEOS ([@andrewsayre] - [#22913]) ([heos docs]) +- Test for circular dependencies using manifests ([@balloob] - [#22908]) +- bump raincloudy to 0.0.7 ([@vanstinator] - [#22935]) ([raincloud docs]) +- Binary sensors for netgear_lte ([@amelchio] - [#22902]) ([netgear_lte docs]) (new-platform) +- Cherry pick test fix ([@awarecan] - [#22939]) +- Hide unsupported Sonos favorites ([@amelchio] - [#22940]) ([sonos docs]) +- Add linked battery sensor to HomeKit ([@adrum] - [#22788]) ([homekit docs]) +- Remove introduction component ([@balloob] - [#22944]) ([introduction docs]) (breaking change) +- Fix broken platform components ([@balloob] - [#22943]) ([automation docs]) ([mqtt docs]) ([telegram_bot docs]) +- Add color setting trait ([@balloob] - [#22894]) ([google_assistant docs]) +- Fix HomeKit fan speed conversion ([@cdce8p] - [#22951]) ([homekit docs]) +- Add sms_total sensor to netgear_lte ([@amelchio] - [#22954]) ([netgear_lte docs]) +- Use ConfigEntryNotReady when setting up Daikin ([@fredrike] - [#22901]) ([daikin docs]) +- Add functionality to the version sensor ([@mgiako] - [#22896]) ([version docs]) +- Use dict[key] for required config keys and keys with default values of MQTT light ([@emontnemery] - [#22834]) ([mqtt docs]) +- Upgrade pytest to 4.4.0 ([@scop] - [#22822]) +- Uprade asynctest to 0.12.3 ([@scop] - [#22824]) +- Upgrade Sphinx to 2.0.1 ([@fabaff] - [#22960]) +- Upgrade youtube_dl to 2019.04.07 ([@fabaff] - [#22961]) ([media_extractor docs]) +- Update ordering ([@fabaff] - [#22963]) ([luci docs]) +- Add missing attribution ([@fabaff] - [#22964]) ([london_underground docs]) +- Upgrade ruamel.yaml to 0.15.91 ([@fabaff] - [#22965]) +- Set pytz>=2019.01 ([@fabaff] - [#22966]) +- Check for supported features in media_player services ([@andrewsayre] - [#22878]) ([media_player docs]) (breaking change) +- Add ESPHome climate support ([@OttoWinter] - [#22859]) ([esphome docs]) (new-platform) +- Fix deCONZ change entity_id bug ([@Kane610] - [#22974]) ([deconz docs]) +- Fix optimistic mode and add tests ([@emontnemery] - [#22899]) ([mqtt docs]) +- Fix myq increasing number of network connections ([@ehendrix23] - [#22432]) ([myq docs]) +- Add watchdog reset to on_connect in Ambient ([@bachya] - [#22956]) ([ambient_station docs]) +- Catch connection reset ([@balloob] - [#22982]) ([websocket_api docs]) +- Stream support for Netatmo cameras ([@cgtobi] - [#22952]) ([netatmo docs]) +- Google Assistant: Migrate light setting trait to use HSV color spectrum ([@balloob] - [#22980]) ([google_assistant docs]) (breaking change) +- Bump pyubee version to support more models and detect model automatically ([@mzdrale] - [#22450]) ([ubee docs]) +- Load requirements and dependencies from manifests. Fallback to current `REQUIREMENTS` and `DEPENDENCIES` ([@rohankapoorcom] - [#22717]) (breaking change) +- Add device HmIP-MIOB to Homematic IP Cloud ([@SukramJ] - [#22975]) ([homematicip_cloud docs]) +- Prevent the projector to toogle on/off ([@stbkde] - [#22985]) ([epson docs]) +- Fix test failed in py35 ([@awarecan] - [#23002]) +- Add aftership package details and add/remove services ([@iantrich] - [#22275]) ([aftership docs]) +- Mobile App: Remove component loading support ([@robbiet480] - [#23025]) ([mobile_app docs]) +- Specify configurator as dependency ([@balloob] - [#23030]) +- Fix unnecessary hass.components interaction ([@balloob] - [#23029]) ([bloomsky docs]) ([netatmo docs]) ([wemo docs]) +- Instituto Geográfico Nacional Sismología (Earthquakes) Feed platform ([@exxamalte] - [#22696]) ([ign_sismologia docs]) (new-integration) (new-platform) +- Update HAP-python to 2.5.0 ([@adrum] - [#23031]) ([homekit docs]) +- Remove expired 17track.net packages from entity registry ([@bachya] - [#23001]) ([seventeentrack docs]) +- Replace get_platform ([@cgarwood] - [#23014]) ([zwave docs]) +- Convert service helper to use async_get_integration ([@balloob] - [#23023]) +- Remove dependencies and requirements ([@cgtobi] - [#23024]) +- Migrate check-config to use get_integration ([@balloob] - [#23026]) +- Move Broadlink services to component ([@elupus] - [#21465]) ([broadlink docs]) +- Bandage telegram bot ([@dgomes] - [#23022]) ([telegram_bot docs]) +- Update RainMachine sensors in parallel ([@bachya] - [#23057]) ([rainmachine docs]) +- Only load stream when av package available ([@balloob] - [#23058]) ([default_config docs]) +- Convert translation helper to use async_get_integration ([@balloob] - [#23054]) +- Allow aws credential skip validation ([@awarecan] - [#22991]) ([aws docs]) +- Upgrade python-slugify to 3.0.2 ([@BKPepe] - [#22997]) +- Add Satel_integra switchable outputs and multiple partitions ([@c-soft] - [#21992]) ([satel_integra docs]) (breaking change) (new-platform) +- Bugfix ZHA device_removed() handler. ([@Adminiuga] - [#23074]) ([zha docs]) +- Fix websocket connection sensor ([@Swamp-Ig] - [#22923]) ([websocket_api docs]) +- Validate data packet format on config validation ([@elupus] - [#23062]) ([broadlink docs]) +- Create decorator to check service permissions ([@bachya] - [#22667]) ([rainmachine docs]) +- Validate component usage ([@balloob] - [#23037]) +- Fix test ([@bachya] - [#23081]) +- HEOS confirm discovered devices before adding ([@andrewsayre] - [#23063]) ([heos docs]) +- Add missing async for tplink's async_setup_platform methods ([@rytilahti] - [#23066]) ([tplink docs]) +- Add support for Stiebel Eltron heat pumps ([@fucm] - [#21199]) ([stiebel_eltron docs]) (new-platform) +- Ensure OpenUV service checks permissions ([@bachya] - [#22668]) ([openuv docs]) +- Deprecate implicit state_topic for MQTT discovery ([@emontnemery] - [#22998]) ([mqtt docs]) (breaking change) +- Fix bugs in MQTT vacuum ([@emontnemery] - [#23048]) ([mqtt docs]) +- Refactor MQTT climate to deduplicate code ([@emontnemery] - [#23044]) ([mqtt docs]) +- Ignore secrets.yaml when using include_dir_named ([@choss] - [#22929]) +- Remove validate from aws_config ([@awarecan] - [#23084]) ([aws docs]) +- Migrate packages and check config ([@balloob] - [#23082]) +- Increase timeout ([@awarecan] - [#23098]) +- Add URL query parameters to webhook trigger result data ([@ActuallyRuben] - [#23043]) ([automation docs]) +- Add support for params in send_command ([@pszafer] - [#23071]) ([mqtt docs]) +- Fix demo ([@balloob] - [#23087]) ([demo docs]) +- Await merge_packages_config(). ([@Adminiuga] - [#23109]) +- Further integration load cleanups ([@balloob] - [#23104]) +- Fix for stateless covers ([@giefca] - [#22962]) ([google_assistant docs]) +- Upgraded python-velbus package, this fixes a lot of problems with the… ([@Cereal2nd] - [#23100]) +- Support updating deCONZ host address ([@Kane610] - [#22784]) ([deconz docs]) +- Remove loader.get_component ([@balloob] - [#23111]) +- Load component which contains data entry flow handler ([@awarecan] - [#23107]) +- Fix homekit_controller climate supported operation_list being blank ([@Jc2k] - [#23095]) ([homekit_controller docs]) +- Axis - start stream when system is ready ([@Kane610] - [#23119]) ([axis docs]) +- Handle missing 'serialno' of Android TV ([@JeffLIrion] - [#22996]) ([androidtv docs]) (breaking change) +- Lower verbosity of command line sensor ([@tsvi] - [#23120]) ([command_line docs]) +- Bump pyatmo version ([@cgtobi] - [#23116]) ([netatmo docs]) +- Clean coveragerc of removed integrations ([@cgtobi] - [#23118]) +- Add Google Assistant garage type ([@giefca] - [#23115]) ([google_assistant docs]) +- Add pvizeli/danielperna84 to code owner of homematic ([@pvizeli] - [#22989]) ([homematic docs]) +- Add basic Supla cover support ([@mwegrzynek] - [#22133]) ([supla docs]) (new-platform) +- Ensure Boolean configuration values are handled correctly. ([@loe] - [#22810]) ([zwave docs]) +- Axis component support unloading entries ([@Kane610] - [#22692]) ([axis docs]) +- Update yeelight lib ([@zewelor] - [#23123]) ([yeelight docs]) +- Update Leviton Decora WiFi library version. ([@tlyakhov] - [#23125]) ([decora_wifi docs]) +- skip non existing zones ([@fredrike] - [#23113]) ([daikin docs]) +- load cleanups ([@balloob] - [#23112]) +- Fix flux_led only-white controllers (and remove explicit declaration as RGBW in automatic add) ([@autinerd] - [#22210]) ([flux_led docs]) +- Bump pyhs100 requirement for tplink integration ([@rytilahti] - [#23065]) ([tplink docs]) +- Load integrations only once ([@balloob] - [#23132]) +- only preload when stream is setup ([@hunterjm] - [#23134]) ([camera docs]) +- Axis - improved internal parameter handling ([@Kane610] - [#23122]) ([axis docs]) +- Added state workaround exception for Kwikset 99100-078 ([@Villhellm] - [#23130]) ([zwave docs]) +- Fix niko_home_control integration ([@NoUseFreak] - [#23093]) ([niko_home_control docs]) +- Fix verify_ssl configuration ([@Anonym-tsk] - [#23146]) ([telegram_bot docs]) +- Add support for after_dependencies ([@balloob] - [#23148]) ([camera docs]) ([mysensors docs]) ([owntracks docs]) +- Simplify esphome ([@OttoWinter] - [#22868]) ([esphome docs]) (new-platform) +- Update components that can be used without being set up ([@balloob] - [#23133]) +- Rename google/tts.py to google_translate/tts.py ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (breaking change) (new-integration) +- update caldav to fix calendar issues with synology clients ([@cmsimike] - [#23145]) ([caldav docs]) +- Add target_temp_high/low and current_temperature ([@elupus] - [#21393]) ([water_heater docs]) +- Genius hub ([@GeoffAtHome] - [#21598]) ([geniushub docs]) (new-platform) +- Allow switches to be represented as outlets on google assistant ([@elupus] - [#23149]) ([demo docs]) ([google_assistant docs]) ([switch docs]) +- Fix check config script ([@balloob] - [#23151]) +- Homematic Lock: state_uncertain attribute, Homematic dimmer: Light service transition attribute ([@trilu2000] - [#22928]) ([homematic docs]) +- catch asyncio.TimeoutError ([@molobrakos] - [#23156]) ([eliqonline docs]) +- Axis change how new event is signalled ([@Kane610] - [#23152]) ([axis docs]) +- Bump Home Assistant Cloud 0.12 ([@pvizeli] - [#23159]) ([cloud docs]) +- Added epson workforce component ([@ThaStealth] - [#23144]) ([epsonworkforce docs]) (new-platform) +- Install deps and reqs early for config flows ([@balloob] - [#23169]) +- I think this is a potential bug ([@Swamp-Ig] - [#23157]) +- Changed scene unique IDs ([@pbalogh77] - [#22987]) ([fibaro docs]) (breaking change) +- homekit_controller: Support cover stop ([@Jc2k] - [#23046]) ([homekit_controller docs]) +- Fix handling of homekit_controler zeroconf c# changes ([@Jc2k] - [#22995]) ([homekit_controller docs]) +- Support fetching/setting humidity of HomeKit controller thermostats ([@Jc2k] - [#23040]) ([homekit_controller docs]) +- Adding Telegram bot leave_chat() service ([@Limych] - [#22259]) ([telegram_bot docs]) +- Only create sensors if the station actually has values for them. ([@jvanderneutstulen] - [#20643]) ([luftdaten docs]) + +[#19590]: https://github.com/home-assistant/home-assistant/pull/19590 +[#20256]: https://github.com/home-assistant/home-assistant/pull/20256 +[#20624]: https://github.com/home-assistant/home-assistant/pull/20624 +[#20643]: https://github.com/home-assistant/home-assistant/pull/20643 +[#21152]: https://github.com/home-assistant/home-assistant/pull/21152 +[#21199]: https://github.com/home-assistant/home-assistant/pull/21199 +[#21393]: https://github.com/home-assistant/home-assistant/pull/21393 +[#21438]: https://github.com/home-assistant/home-assistant/pull/21438 +[#21465]: https://github.com/home-assistant/home-assistant/pull/21465 +[#21598]: https://github.com/home-assistant/home-assistant/pull/21598 +[#21703]: https://github.com/home-assistant/home-assistant/pull/21703 +[#21721]: https://github.com/home-assistant/home-assistant/pull/21721 +[#21874]: https://github.com/home-assistant/home-assistant/pull/21874 +[#21938]: https://github.com/home-assistant/home-assistant/pull/21938 +[#21992]: https://github.com/home-assistant/home-assistant/pull/21992 +[#22133]: https://github.com/home-assistant/home-assistant/pull/22133 +[#22140]: https://github.com/home-assistant/home-assistant/pull/22140 +[#22158]: https://github.com/home-assistant/home-assistant/pull/22158 +[#22184]: https://github.com/home-assistant/home-assistant/pull/22184 +[#22192]: https://github.com/home-assistant/home-assistant/pull/22192 +[#22194]: https://github.com/home-assistant/home-assistant/pull/22194 +[#22196]: https://github.com/home-assistant/home-assistant/pull/22196 +[#22210]: https://github.com/home-assistant/home-assistant/pull/22210 +[#22215]: https://github.com/home-assistant/home-assistant/pull/22215 +[#22259]: https://github.com/home-assistant/home-assistant/pull/22259 +[#22275]: https://github.com/home-assistant/home-assistant/pull/22275 +[#22341]: https://github.com/home-assistant/home-assistant/pull/22341 +[#22396]: https://github.com/home-assistant/home-assistant/pull/22396 +[#22399]: https://github.com/home-assistant/home-assistant/pull/22399 +[#22400]: https://github.com/home-assistant/home-assistant/pull/22400 +[#22401]: https://github.com/home-assistant/home-assistant/pull/22401 +[#22418]: https://github.com/home-assistant/home-assistant/pull/22418 +[#22432]: https://github.com/home-assistant/home-assistant/pull/22432 +[#22449]: https://github.com/home-assistant/home-assistant/pull/22449 +[#22450]: https://github.com/home-assistant/home-assistant/pull/22450 +[#22489]: https://github.com/home-assistant/home-assistant/pull/22489 +[#22506]: https://github.com/home-assistant/home-assistant/pull/22506 +[#22508]: https://github.com/home-assistant/home-assistant/pull/22508 +[#22514]: https://github.com/home-assistant/home-assistant/pull/22514 +[#22515]: https://github.com/home-assistant/home-assistant/pull/22515 +[#22516]: https://github.com/home-assistant/home-assistant/pull/22516 +[#22517]: https://github.com/home-assistant/home-assistant/pull/22517 +[#22522]: https://github.com/home-assistant/home-assistant/pull/22522 +[#22526]: https://github.com/home-assistant/home-assistant/pull/22526 +[#22540]: https://github.com/home-assistant/home-assistant/pull/22540 +[#22544]: https://github.com/home-assistant/home-assistant/pull/22544 +[#22552]: https://github.com/home-assistant/home-assistant/pull/22552 +[#22554]: https://github.com/home-assistant/home-assistant/pull/22554 +[#22558]: https://github.com/home-assistant/home-assistant/pull/22558 +[#22561]: https://github.com/home-assistant/home-assistant/pull/22561 +[#22563]: https://github.com/home-assistant/home-assistant/pull/22563 +[#22566]: https://github.com/home-assistant/home-assistant/pull/22566 +[#22567]: https://github.com/home-assistant/home-assistant/pull/22567 +[#22572]: https://github.com/home-assistant/home-assistant/pull/22572 +[#22576]: https://github.com/home-assistant/home-assistant/pull/22576 +[#22581]: https://github.com/home-assistant/home-assistant/pull/22581 +[#22583]: https://github.com/home-assistant/home-assistant/pull/22583 +[#22589]: https://github.com/home-assistant/home-assistant/pull/22589 +[#22592]: https://github.com/home-assistant/home-assistant/pull/22592 +[#22593]: https://github.com/home-assistant/home-assistant/pull/22593 +[#22597]: https://github.com/home-assistant/home-assistant/pull/22597 +[#22600]: https://github.com/home-assistant/home-assistant/pull/22600 +[#22606]: https://github.com/home-assistant/home-assistant/pull/22606 +[#22609]: https://github.com/home-assistant/home-assistant/pull/22609 +[#22611]: https://github.com/home-assistant/home-assistant/pull/22611 +[#22615]: https://github.com/home-assistant/home-assistant/pull/22615 +[#22620]: https://github.com/home-assistant/home-assistant/pull/22620 +[#22621]: https://github.com/home-assistant/home-assistant/pull/22621 +[#22624]: https://github.com/home-assistant/home-assistant/pull/22624 +[#22626]: https://github.com/home-assistant/home-assistant/pull/22626 +[#22627]: https://github.com/home-assistant/home-assistant/pull/22627 +[#22630]: https://github.com/home-assistant/home-assistant/pull/22630 +[#22632]: https://github.com/home-assistant/home-assistant/pull/22632 +[#22634]: https://github.com/home-assistant/home-assistant/pull/22634 +[#22637]: https://github.com/home-assistant/home-assistant/pull/22637 +[#22646]: https://github.com/home-assistant/home-assistant/pull/22646 +[#22647]: https://github.com/home-assistant/home-assistant/pull/22647 +[#22649]: https://github.com/home-assistant/home-assistant/pull/22649 +[#22652]: https://github.com/home-assistant/home-assistant/pull/22652 +[#22653]: https://github.com/home-assistant/home-assistant/pull/22653 +[#22658]: https://github.com/home-assistant/home-assistant/pull/22658 +[#22661]: https://github.com/home-assistant/home-assistant/pull/22661 +[#22662]: https://github.com/home-assistant/home-assistant/pull/22662 +[#22663]: https://github.com/home-assistant/home-assistant/pull/22663 +[#22667]: https://github.com/home-assistant/home-assistant/pull/22667 +[#22668]: https://github.com/home-assistant/home-assistant/pull/22668 +[#22674]: https://github.com/home-assistant/home-assistant/pull/22674 +[#22679]: https://github.com/home-assistant/home-assistant/pull/22679 +[#22681]: https://github.com/home-assistant/home-assistant/pull/22681 +[#22683]: https://github.com/home-assistant/home-assistant/pull/22683 +[#22684]: https://github.com/home-assistant/home-assistant/pull/22684 +[#22686]: https://github.com/home-assistant/home-assistant/pull/22686 +[#22687]: https://github.com/home-assistant/home-assistant/pull/22687 +[#22691]: https://github.com/home-assistant/home-assistant/pull/22691 +[#22692]: https://github.com/home-assistant/home-assistant/pull/22692 +[#22696]: https://github.com/home-assistant/home-assistant/pull/22696 +[#22698]: https://github.com/home-assistant/home-assistant/pull/22698 +[#22699]: https://github.com/home-assistant/home-assistant/pull/22699 +[#22703]: https://github.com/home-assistant/home-assistant/pull/22703 +[#22704]: https://github.com/home-assistant/home-assistant/pull/22704 +[#22705]: https://github.com/home-assistant/home-assistant/pull/22705 +[#22707]: https://github.com/home-assistant/home-assistant/pull/22707 +[#22708]: https://github.com/home-assistant/home-assistant/pull/22708 +[#22710]: https://github.com/home-assistant/home-assistant/pull/22710 +[#22715]: https://github.com/home-assistant/home-assistant/pull/22715 +[#22717]: https://github.com/home-assistant/home-assistant/pull/22717 +[#22718]: https://github.com/home-assistant/home-assistant/pull/22718 +[#22719]: https://github.com/home-assistant/home-assistant/pull/22719 +[#22721]: https://github.com/home-assistant/home-assistant/pull/22721 +[#22737]: https://github.com/home-assistant/home-assistant/pull/22737 +[#22738]: https://github.com/home-assistant/home-assistant/pull/22738 +[#22748]: https://github.com/home-assistant/home-assistant/pull/22748 +[#22751]: https://github.com/home-assistant/home-assistant/pull/22751 +[#22753]: https://github.com/home-assistant/home-assistant/pull/22753 +[#22767]: https://github.com/home-assistant/home-assistant/pull/22767 +[#22774]: https://github.com/home-assistant/home-assistant/pull/22774 +[#22784]: https://github.com/home-assistant/home-assistant/pull/22784 +[#22785]: https://github.com/home-assistant/home-assistant/pull/22785 +[#22788]: https://github.com/home-assistant/home-assistant/pull/22788 +[#22791]: https://github.com/home-assistant/home-assistant/pull/22791 +[#22792]: https://github.com/home-assistant/home-assistant/pull/22792 +[#22794]: https://github.com/home-assistant/home-assistant/pull/22794 +[#22802]: https://github.com/home-assistant/home-assistant/pull/22802 +[#22805]: https://github.com/home-assistant/home-assistant/pull/22805 +[#22806]: https://github.com/home-assistant/home-assistant/pull/22806 +[#22809]: https://github.com/home-assistant/home-assistant/pull/22809 +[#22810]: https://github.com/home-assistant/home-assistant/pull/22810 +[#22816]: https://github.com/home-assistant/home-assistant/pull/22816 +[#22822]: https://github.com/home-assistant/home-assistant/pull/22822 +[#22824]: https://github.com/home-assistant/home-assistant/pull/22824 +[#22826]: https://github.com/home-assistant/home-assistant/pull/22826 +[#22828]: https://github.com/home-assistant/home-assistant/pull/22828 +[#22829]: https://github.com/home-assistant/home-assistant/pull/22829 +[#22830]: https://github.com/home-assistant/home-assistant/pull/22830 +[#22831]: https://github.com/home-assistant/home-assistant/pull/22831 +[#22832]: https://github.com/home-assistant/home-assistant/pull/22832 +[#22833]: https://github.com/home-assistant/home-assistant/pull/22833 +[#22834]: https://github.com/home-assistant/home-assistant/pull/22834 +[#22835]: https://github.com/home-assistant/home-assistant/pull/22835 +[#22836]: https://github.com/home-assistant/home-assistant/pull/22836 +[#22837]: https://github.com/home-assistant/home-assistant/pull/22837 +[#22838]: https://github.com/home-assistant/home-assistant/pull/22838 +[#22846]: https://github.com/home-assistant/home-assistant/pull/22846 +[#22847]: https://github.com/home-assistant/home-assistant/pull/22847 +[#22850]: https://github.com/home-assistant/home-assistant/pull/22850 +[#22855]: https://github.com/home-assistant/home-assistant/pull/22855 +[#22858]: https://github.com/home-assistant/home-assistant/pull/22858 +[#22859]: https://github.com/home-assistant/home-assistant/pull/22859 +[#22860]: https://github.com/home-assistant/home-assistant/pull/22860 +[#22867]: https://github.com/home-assistant/home-assistant/pull/22867 +[#22868]: https://github.com/home-assistant/home-assistant/pull/22868 +[#22871]: https://github.com/home-assistant/home-assistant/pull/22871 +[#22875]: https://github.com/home-assistant/home-assistant/pull/22875 +[#22876]: https://github.com/home-assistant/home-assistant/pull/22876 +[#22878]: https://github.com/home-assistant/home-assistant/pull/22878 +[#22880]: https://github.com/home-assistant/home-assistant/pull/22880 +[#22884]: https://github.com/home-assistant/home-assistant/pull/22884 +[#22885]: https://github.com/home-assistant/home-assistant/pull/22885 +[#22886]: https://github.com/home-assistant/home-assistant/pull/22886 +[#22892]: https://github.com/home-assistant/home-assistant/pull/22892 +[#22894]: https://github.com/home-assistant/home-assistant/pull/22894 +[#22896]: https://github.com/home-assistant/home-assistant/pull/22896 +[#22899]: https://github.com/home-assistant/home-assistant/pull/22899 +[#22901]: https://github.com/home-assistant/home-assistant/pull/22901 +[#22902]: https://github.com/home-assistant/home-assistant/pull/22902 +[#22903]: https://github.com/home-assistant/home-assistant/pull/22903 +[#22906]: https://github.com/home-assistant/home-assistant/pull/22906 +[#22908]: https://github.com/home-assistant/home-assistant/pull/22908 +[#22909]: https://github.com/home-assistant/home-assistant/pull/22909 +[#22911]: https://github.com/home-assistant/home-assistant/pull/22911 +[#22912]: https://github.com/home-assistant/home-assistant/pull/22912 +[#22913]: https://github.com/home-assistant/home-assistant/pull/22913 +[#22922]: https://github.com/home-assistant/home-assistant/pull/22922 +[#22923]: https://github.com/home-assistant/home-assistant/pull/22923 +[#22928]: https://github.com/home-assistant/home-assistant/pull/22928 +[#22929]: https://github.com/home-assistant/home-assistant/pull/22929 +[#22935]: https://github.com/home-assistant/home-assistant/pull/22935 +[#22939]: https://github.com/home-assistant/home-assistant/pull/22939 +[#22940]: https://github.com/home-assistant/home-assistant/pull/22940 +[#22943]: https://github.com/home-assistant/home-assistant/pull/22943 +[#22944]: https://github.com/home-assistant/home-assistant/pull/22944 +[#22951]: https://github.com/home-assistant/home-assistant/pull/22951 +[#22952]: https://github.com/home-assistant/home-assistant/pull/22952 +[#22954]: https://github.com/home-assistant/home-assistant/pull/22954 +[#22956]: https://github.com/home-assistant/home-assistant/pull/22956 +[#22960]: https://github.com/home-assistant/home-assistant/pull/22960 +[#22961]: https://github.com/home-assistant/home-assistant/pull/22961 +[#22962]: https://github.com/home-assistant/home-assistant/pull/22962 +[#22963]: https://github.com/home-assistant/home-assistant/pull/22963 +[#22964]: https://github.com/home-assistant/home-assistant/pull/22964 +[#22965]: https://github.com/home-assistant/home-assistant/pull/22965 +[#22966]: https://github.com/home-assistant/home-assistant/pull/22966 +[#22974]: https://github.com/home-assistant/home-assistant/pull/22974 +[#22975]: https://github.com/home-assistant/home-assistant/pull/22975 +[#22980]: https://github.com/home-assistant/home-assistant/pull/22980 +[#22982]: https://github.com/home-assistant/home-assistant/pull/22982 +[#22985]: https://github.com/home-assistant/home-assistant/pull/22985 +[#22987]: https://github.com/home-assistant/home-assistant/pull/22987 +[#22989]: https://github.com/home-assistant/home-assistant/pull/22989 +[#22991]: https://github.com/home-assistant/home-assistant/pull/22991 +[#22995]: https://github.com/home-assistant/home-assistant/pull/22995 +[#22996]: https://github.com/home-assistant/home-assistant/pull/22996 +[#22997]: https://github.com/home-assistant/home-assistant/pull/22997 +[#22998]: https://github.com/home-assistant/home-assistant/pull/22998 +[#23001]: https://github.com/home-assistant/home-assistant/pull/23001 +[#23002]: https://github.com/home-assistant/home-assistant/pull/23002 +[#23014]: https://github.com/home-assistant/home-assistant/pull/23014 +[#23022]: https://github.com/home-assistant/home-assistant/pull/23022 +[#23023]: https://github.com/home-assistant/home-assistant/pull/23023 +[#23024]: https://github.com/home-assistant/home-assistant/pull/23024 +[#23025]: https://github.com/home-assistant/home-assistant/pull/23025 +[#23026]: https://github.com/home-assistant/home-assistant/pull/23026 +[#23029]: https://github.com/home-assistant/home-assistant/pull/23029 +[#23030]: https://github.com/home-assistant/home-assistant/pull/23030 +[#23031]: https://github.com/home-assistant/home-assistant/pull/23031 +[#23037]: https://github.com/home-assistant/home-assistant/pull/23037 +[#23040]: https://github.com/home-assistant/home-assistant/pull/23040 +[#23043]: https://github.com/home-assistant/home-assistant/pull/23043 +[#23044]: https://github.com/home-assistant/home-assistant/pull/23044 +[#23046]: https://github.com/home-assistant/home-assistant/pull/23046 +[#23048]: https://github.com/home-assistant/home-assistant/pull/23048 +[#23054]: https://github.com/home-assistant/home-assistant/pull/23054 +[#23057]: https://github.com/home-assistant/home-assistant/pull/23057 +[#23058]: https://github.com/home-assistant/home-assistant/pull/23058 +[#23062]: https://github.com/home-assistant/home-assistant/pull/23062 +[#23063]: https://github.com/home-assistant/home-assistant/pull/23063 +[#23065]: https://github.com/home-assistant/home-assistant/pull/23065 +[#23066]: https://github.com/home-assistant/home-assistant/pull/23066 +[#23071]: https://github.com/home-assistant/home-assistant/pull/23071 +[#23074]: https://github.com/home-assistant/home-assistant/pull/23074 +[#23081]: https://github.com/home-assistant/home-assistant/pull/23081 +[#23082]: https://github.com/home-assistant/home-assistant/pull/23082 +[#23084]: https://github.com/home-assistant/home-assistant/pull/23084 +[#23087]: https://github.com/home-assistant/home-assistant/pull/23087 +[#23090]: https://github.com/home-assistant/home-assistant/pull/23090 +[#23093]: https://github.com/home-assistant/home-assistant/pull/23093 +[#23095]: https://github.com/home-assistant/home-assistant/pull/23095 +[#23098]: https://github.com/home-assistant/home-assistant/pull/23098 +[#23100]: https://github.com/home-assistant/home-assistant/pull/23100 +[#23104]: https://github.com/home-assistant/home-assistant/pull/23104 +[#23107]: https://github.com/home-assistant/home-assistant/pull/23107 +[#23109]: https://github.com/home-assistant/home-assistant/pull/23109 +[#23111]: https://github.com/home-assistant/home-assistant/pull/23111 +[#23112]: https://github.com/home-assistant/home-assistant/pull/23112 +[#23113]: https://github.com/home-assistant/home-assistant/pull/23113 +[#23115]: https://github.com/home-assistant/home-assistant/pull/23115 +[#23116]: https://github.com/home-assistant/home-assistant/pull/23116 +[#23118]: https://github.com/home-assistant/home-assistant/pull/23118 +[#23119]: https://github.com/home-assistant/home-assistant/pull/23119 +[#23120]: https://github.com/home-assistant/home-assistant/pull/23120 +[#23122]: https://github.com/home-assistant/home-assistant/pull/23122 +[#23123]: https://github.com/home-assistant/home-assistant/pull/23123 +[#23125]: https://github.com/home-assistant/home-assistant/pull/23125 +[#23130]: https://github.com/home-assistant/home-assistant/pull/23130 +[#23132]: https://github.com/home-assistant/home-assistant/pull/23132 +[#23133]: https://github.com/home-assistant/home-assistant/pull/23133 +[#23134]: https://github.com/home-assistant/home-assistant/pull/23134 +[#23144]: https://github.com/home-assistant/home-assistant/pull/23144 +[#23145]: https://github.com/home-assistant/home-assistant/pull/23145 +[#23146]: https://github.com/home-assistant/home-assistant/pull/23146 +[#23148]: https://github.com/home-assistant/home-assistant/pull/23148 +[#23149]: https://github.com/home-assistant/home-assistant/pull/23149 +[#23151]: https://github.com/home-assistant/home-assistant/pull/23151 +[#23152]: https://github.com/home-assistant/home-assistant/pull/23152 +[#23156]: https://github.com/home-assistant/home-assistant/pull/23156 +[#23157]: https://github.com/home-assistant/home-assistant/pull/23157 +[#23159]: https://github.com/home-assistant/home-assistant/pull/23159 +[#23169]: https://github.com/home-assistant/home-assistant/pull/23169 +[@AZDane]: https://github.com/AZDane +[@ActuallyRuben]: https://github.com/ActuallyRuben +[@Adminiuga]: https://github.com/Adminiuga +[@Anonym-tsk]: https://github.com/Anonym-tsk +[@BKPepe]: https://github.com/BKPepe +[@Cereal2nd]: https://github.com/Cereal2nd +[@GeoffAtHome]: https://github.com/GeoffAtHome +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@JumpMaster]: https://github.com/JumpMaster +[@Kane610]: https://github.com/Kane610 +[@Limych]: https://github.com/Limych +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@N1nja98]: https://github.com/N1nja98 +[@NoUseFreak]: https://github.com/NoUseFreak +[@OleksandrBerchenko]: https://github.com/OleksandrBerchenko +[@Oro]: https://github.com/Oro +[@OttoWinter]: https://github.com/OttoWinter +[@SukramJ]: https://github.com/SukramJ +[@Swamp-Ig]: https://github.com/Swamp-Ig +[@ThaStealth]: https://github.com/ThaStealth +[@VDRainer]: https://github.com/VDRainer +[@Villhellm]: https://github.com/Villhellm +[@VirtualL]: https://github.com/VirtualL +[@Yarikx]: https://github.com/Yarikx +[@aav7fl]: https://github.com/aav7fl +[@adrum]: https://github.com/adrum +[@ahayworth]: https://github.com/ahayworth +[@akasma74]: https://github.com/akasma74 +[@alengwenus]: https://github.com/alengwenus +[@amelchio]: https://github.com/amelchio +[@andrewsayre]: https://github.com/andrewsayre +[@aprosvetova]: https://github.com/aprosvetova +[@autinerd]: https://github.com/autinerd +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bendews]: https://github.com/bendews +[@c-soft]: https://github.com/c-soft +[@carstenschroeder]: https://github.com/carstenschroeder +[@cdce8p]: https://github.com/cdce8p +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@choss]: https://github.com/choss +[@cmsimike]: https://github.com/cmsimike +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@easink]: https://github.com/easink +[@ehendrix23]: https://github.com/ehendrix23 +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@etheralm]: https://github.com/etheralm +[@evanjd]: https://github.com/evanjd +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@fbradyirl]: https://github.com/fbradyirl +[@fredrike]: https://github.com/fredrike +[@fucm]: https://github.com/fucm +[@giefca]: https://github.com/giefca +[@hunterjm]: https://github.com/hunterjm +[@iantrich]: https://github.com/iantrich +[@jvanderneutstulen]: https://github.com/jvanderneutstulen +[@kellerza]: https://github.com/kellerza +[@kstaniek]: https://github.com/kstaniek +[@loe]: https://github.com/loe +[@maddenp]: https://github.com/maddenp +[@markusressel]: https://github.com/markusressel +[@mgiako]: https://github.com/mgiako +[@molobrakos]: https://github.com/molobrakos +[@mwegrzynek]: https://github.com/mwegrzynek +[@mzdrale]: https://github.com/mzdrale +[@oblogic7]: https://github.com/oblogic7 +[@panosmz]: https://github.com/panosmz +[@pavoni]: https://github.com/pavoni +[@pbalogh77]: https://github.com/pbalogh77 +[@perosb]: https://github.com/perosb +[@pnbruckner]: https://github.com/pnbruckner +[@pszafer]: https://github.com/pszafer +[@pvizeli]: https://github.com/pvizeli +[@renemarc]: https://github.com/renemarc +[@robbiet480]: https://github.com/robbiet480 +[@roblandry]: https://github.com/roblandry +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@royto]: https://github.com/royto +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@scornelissen85]: https://github.com/scornelissen85 +[@stbkde]: https://github.com/stbkde +[@techfreek]: https://github.com/techfreek +[@teliov]: https://github.com/teliov +[@tlyakhov]: https://github.com/tlyakhov +[@trilu2000]: https://github.com/trilu2000 +[@tsvi]: https://github.com/tsvi +[@vanstinator]: https://github.com/vanstinator +[@yosilevy]: https://github.com/yosilevy +[@zewelor]: https://github.com/zewelor +[@zxdavb]: https://github.com/zxdavb +[ads docs]: /components/ads/ +[aftership docs]: /components/aftership/ +[air_quality docs]: /components/air_quality/ +[ambient_station docs]: /components/ambient_station/ +[amcrest docs]: /components/amcrest/ +[androidtv docs]: /components/androidtv/ +[automation docs]: /components/automation/ +[awair docs]: /components/awair/ +[aws docs]: /components/aws/ +[aws_lambda docs]: /components/aws_lambda/ +[aws_sns docs]: /components/aws_sns/ +[aws_sqs docs]: /components/aws_sqs/ +[axis docs]: /components/axis/ +[binary_sensor docs]: /components/binary_sensor/ +[bloomsky docs]: /components/bloomsky/ +[bomradarcam docs]: /components/bomradarcam/ +[broadlink docs]: /components/broadlink/ +[caldav docs]: /components/caldav/ +[camera docs]: /components/camera/ +[cast docs]: /components/cast/ +[cisco_ios docs]: /components/cisco_ios/ +[cisco_mobility_express docs]: /components/cisco_mobility_express/ +[cisco_webex_teams docs]: /components/cisco_webex_teams/ +[ciscospark docs]: /components/ciscospark/ +[citybikes docs]: /components/citybikes/ +[cloud docs]: /components/cloud/ +[command_line docs]: /components/command_line/ +[concord232 docs]: /components/concord232/ +[cover docs]: /components/cover/ +[daikin docs]: /components/daikin/ +[darksky docs]: /components/darksky/ +[deconz docs]: /components/deconz/ +[decora_wifi docs]: /components/decora_wifi/ +[default_config docs]: /components/default_config/ +[demo docs]: /components/demo/ +[dialogflow docs]: /components/dialogflow/ +[discovery docs]: /components/discovery/ +[doorbird docs]: /components/doorbird/ +[dyson docs]: /components/dyson/ +[eliqonline docs]: /components/eliqonline/ +[emulated_hue docs]: /components/emulated_hue/ +[enigma2 docs]: /components/enigma2/ +[epson docs]: /components/epson/ +[epsonworkforce docs]: /components/epsonworkforce/ +[esphome docs]: /components/esphome/ +[evohome docs]: /components/evohome/ +[fibaro docs]: /components/fibaro/ +[flux_led docs]: /components/flux_led/ +[geniushub docs]: /components/geniushub/ +[geo_rss_events docs]: /components/geo_rss_events/ +[geofency docs]: /components/geofency/ +[glances docs]: /components/glances/ +[google docs]: /components/google/ +[google_assistant docs]: /components/google_assistant/ +[google_translate docs]: /components/google_translate/ +[gpslogger docs]: /components/gpslogger/ +[gtfs docs]: /components/gtfs/ +[hangouts docs]: /components/hangouts/ +[harmony docs]: /components/harmony/ +[heos docs]: /components/heos/ +[hikvisioncam docs]: /components/hikvisioncam/ +[homekit docs]: /components/homekit/ +[homekit_controller docs]: /components/homekit_controller/ +[homematic docs]: /components/homematic/ +[homematicip_cloud docs]: /components/homematicip_cloud/ +[honeywell docs]: /components/honeywell/ +[html5 docs]: /components/html5/ +[ifttt docs]: /components/ifttt/ +[ign_sismologia docs]: /components/ign_sismologia/ +[influxdb docs]: /components/influxdb/ +[insteon_local docs]: /components/insteon_local/ +[insteon_plm docs]: /components/insteon_plm/ +[introduction docs]: /components/introduction/ +[lcn docs]: /components/lcn/ +[light docs]: /components/light/ +[lightwave docs]: /components/lightwave/ +[linky docs]: /components/linky/ +[locative docs]: /components/locative/ +[logi_circle docs]: /components/logi_circle/ +[london_underground docs]: /components/london_underground/ +[loopenergy docs]: /components/loopenergy/ +[luci docs]: /components/luci/ +[luftdaten docs]: /components/luftdaten/ +[mailgun docs]: /components/mailgun/ +[media_extractor docs]: /components/media_extractor/ +[media_player docs]: /components/media_player/ +[mikrotik docs]: /components/mikrotik/ +[mobile_app docs]: /components/mobile_app/ +[mqtt docs]: /components/mqtt/ +[myq docs]: /components/myq/ +[mysensors docs]: /components/mysensors/ +[n26 docs]: /components/n26/ +[nanoleaf docs]: /components/nanoleaf/ +[netatmo docs]: /components/netatmo/ +[netgear_lte docs]: /components/netgear_lte/ +[niko_home_control docs]: /components/niko_home_control/ +[oasa_telematics docs]: /components/oasa_telematics/ +[openuv docs]: /components/openuv/ +[osramlightify docs]: /components/osramlightify/ +[owntracks docs]: /components/owntracks/ +[person docs]: /components/person/ +[qwikswitch docs]: /components/qwikswitch/ +[raincloud docs]: /components/raincloud/ +[rainmachine docs]: /components/rainmachine/ +[rflink docs]: /components/rflink/ +[ring docs]: /components/ring/ +[satel_integra docs]: /components/satel_integra/ +[sensor docs]: /components/sensor/ +[seventeentrack docs]: /components/seventeentrack/ +[simplisafe docs]: /components/simplisafe/ +[somfy_mylink docs]: /components/somfy_mylink/ +[sonos docs]: /components/sonos/ +[stiebel_eltron docs]: /components/stiebel_eltron/ +[stream docs]: /components/stream/ +[supla docs]: /components/supla/ +[switch docs]: /components/switch/ +[telegram_bot docs]: /components/telegram_bot/ +[tellduslive docs]: /components/tellduslive/ +[tplink docs]: /components/tplink/ +[trend docs]: /components/trend/ +[tts docs]: /components/tts/ +[twilio docs]: /components/twilio/ +[ubee docs]: /components/ubee/ +[version docs]: /components/version/ +[water_heater docs]: /components/water_heater/ +[websocket_api docs]: /components/websocket_api/ +[wemo docs]: /components/wemo/ +[xiaomi_miio docs]: /components/xiaomi_miio/ +[yeelight docs]: /components/yeelight/ +[zengge docs]: /components/zengge/ +[zha docs]: /components/zha/ +[zwave docs]: /components/zwave/ From fb47ac749d3d5a5d725db3cc16639f71eab1b936 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 17 Apr 2019 21:56:22 +0200 Subject: [PATCH 02/50] =?UTF-8?q?=F0=9F=9A=9C=20Merges/Redirects=20Random?= =?UTF-8?q?=20component=20pages=20(#9231)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_components/binary_sensor.random.markdown | 35 ----------------- source/_components/random.markdown | 38 +++++++++++++++---- 2 files changed, 31 insertions(+), 42 deletions(-) delete mode 100644 source/_components/binary_sensor.random.markdown diff --git a/source/_components/binary_sensor.random.markdown b/source/_components/binary_sensor.random.markdown deleted file mode 100644 index 9b2079270fc..00000000000 --- a/source/_components/binary_sensor.random.markdown +++ /dev/null @@ -1,35 +0,0 @@ ---- -layout: page -title: "Random Binary Sensor" -description: "Instructions on how to integrate random state sensors into Home Assistant." -date: 2017-10-27 08:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Utility -ha_iot_class: Local Polling -ha_release: 0.57 -ha_qa_scale: internal ---- - -The `random` binary sensor platform is creating random states (`true`, 1, `on` or `false`, 0, `off`). This can be useful if you want to test automation rules. It generates a new state every time it is polled. - -## {% linkable_title Configuration %} - -To enable the random binary sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: random -``` - -{% configuration %} -name: - description: Name to use in the frontend. - required: false - type: string - default: Random Binary Sensor -{% endconfiguration %} diff --git a/source/_components/random.markdown b/source/_components/random.markdown index 9a89c098bc0..7ef5040dce2 100644 --- a/source/_components/random.markdown +++ b/source/_components/random.markdown @@ -1,24 +1,48 @@ --- layout: page -title: "Random Sensor" -description: "Instructions on how to integrate random number sensors into Home Assistant." +title: "Random" +description: "Instructions on how to integrate random numbers into Home Assistant." date: 2016-10-30 12:10 sidebar: true comments: false sharing: true footer: true logo: home-assistant.png -ha_category: Utility +ha_category: + - Utility + - Sensor + - Binary Sensor ha_iot_class: Local Polling ha_release: 0.32 ha_qa_scale: internal redirect_from: - - /components/sensor.random/ + - /components/sensor.random/ + - /components/binary_sensor.random/ --- -The `random` sensor platform is creating random sensor values (integers) out of a given range. Returned values form a [discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution), meaning that each integer value in the range configured is equally likely to be drawn. This can be useful if you want to test automation rules. It generates a new value every time it is polled. +## {% linkable_title Binary Sensor %} -## {% linkable_title Configuration %} +The `random` binary sensor platform is creating random states (`true`, 1, `on` or `false`, 0, `off`). This can be useful if you want to test automation rules. It generates a new state every time it is polled. + +To enable the random binary sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: random +``` + +{% configuration %} +name: + description: Name to use in the frontend. + required: false + type: string + default: Random Binary Sensor +{% endconfiguration %} + +## {% linkable_title Sensor %} + +The `random` sensor platform is creating random sensor values (integers) out of a given range. Returned values form a [discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution), meaning that each integer value in the range configured is equally likely to be drawn. This can be useful if you want to test automation rules. It generates a new value every time it is polled. To enable the random sensor, add the following lines to your `configuration.yaml` file: @@ -48,4 +72,4 @@ unit_of_measurement: description: Defines the units of measurement of the sensor, if any. required: false type: string -{% endconfiguration %} +{% endconfiguration %} \ No newline at end of file From 49ea12bfdab4c3124a69feca108747d2fc4ad099 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 17 Apr 2019 21:56:39 +0200 Subject: [PATCH 03/50] =?UTF-8?q?=F0=9F=9A=9C=20Merges/Redirects=20Geofenc?= =?UTF-8?q?y=20component=20pages=20(#9230)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🚜 Merges/Redirects Geofency component pages * :pencil2: Tweak --- source/_components/geofency.markdown | 42 ++++++++++++++++++++++------ source/_components/geofency.md | 39 -------------------------- 2 files changed, 33 insertions(+), 48 deletions(-) delete mode 100644 source/_components/geofency.md diff --git a/source/_components/geofency.markdown b/source/_components/geofency.markdown index 52a979377bf..86d38f99d84 100644 --- a/source/_components/geofency.markdown +++ b/source/_components/geofency.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Geofency Device Tracker" +title: "Geofency" description: "Instructions for how to use Geofency to track devices in Home Assistant." date: 2017-08-22 19:00 sidebar: true @@ -8,21 +8,45 @@ comments: false sharing: true footer: true logo: geofency.png -ha_category: Presence Detection +ha_category: + - Presence Detection ha_release: 0.53 ha_iot_class: Cloud Push redirect_from: - - /components/device_tracker.geofency/ + - /components/device_tracker.geofency/ --- -This platform allows you to detect presence using [Geofency](http://www.geofency.com/). +This component sets up integration with [Geofency](http://www.geofency.com/). Geofency is a [paid app](https://itunes.apple.com/app/id615538630) for iOS that lets users to configure a request that will be sent when a geofence or iBeacon region is entered or exited. This can be configured with Home Assistant to update your location. -

-You must have the [Geofency component](/components/geofency/) configured to use this device tracker. -

+Enabling this component will automatically enable the Geofency Device Tracker. + +## {% linkable_title Configuration %} + +To configure Geofency, you must set it up via the integrations panel in the configuration screen. You must then configure the iOS app (via the Webhook feature) to send a POST request to your Home Assistant server at the webhook URL provided by the integration during setup. Use the default POST format. Make sure to enable the 'Update Geo-Position' functionality for mobile beacons. Geofency will automatically generate the device tracker name used for geofences, and you will find it in `known_devices.yaml` after the first request. For beacons, the device name will be `beacon_`, e.g., `device_tracker.beacon_car`. -When you enter a geofence or stationary beacon, your location name in Home Assistant will be set to the name of the geofence or beacon location in Geofency. When you exit a geofence or stationary beacon, your location name in Home Assistant will be set to 'not home'. For mobile beacons, the location name will be 'not_home' whenever the beacon is entered or exited outside of a [zone](/components/zone/), otherwise, it will be set to the name of the zone. +When using mobile beacons (optional) an entry in `configuration.yaml` is still needed as this can't be added via the integrations panel. -To make Geofency work better with the [proximity](/components/proximity/) component, you should enable the 'Send Current Location' feature in the Webhook configuration screen. This ensures that the _current_ GPS coordinates are included in exit events instead of the coordinates of the (center of) the zone that was exited. +{% configuration %} +mobile_beacons: + description: List of beacon names that are to be treated as *mobile*. The name must match the name you configure in Geofency. By default, beacons will be treated as *stationary*. + required: false + type: list +{% endconfiguration %} + +A sample configuration for the `geofency` component when using mobile beacons is shown below: + +```yaml +# Example configuration.yaml entry +geofency: + mobile_beacons: + - car + - keys +``` + +### {% linkable_title Zones %} + +When you enter a geofence or stationary beacon, your location name in Home Assistant will be set to the name of the geofence or beacon location in Geofency. When you exit a geofence or stationary beacon, your location name in Home Assistant will be set to `not home`. For mobile beacons, the location name will be `not_home` whenever the beacon is entered or exited outside of a [zone](/components/zone/), otherwise, it will be set to the name of the zone. + +To make Geofency work better with the [proximity](/components/proximity/) component, you should enable the 'Send Current Location' feature in the Webhook configuration screen. This ensures that the _current_ GPS coordinates are included in exit events instead of the coordinates of the (center of) the zone that was exited. \ No newline at end of file diff --git a/source/_components/geofency.md b/source/_components/geofency.md deleted file mode 100644 index 17287b34be3..00000000000 --- a/source/_components/geofency.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: "Geofency" -description: "Instructions for how to use Geofency to track devices in Home Assistant." -date: 2017-08-22 19:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: geofency.png -ha_category: Presence Detection -ha_release: 0.83 -ha_iot_class: Cloud Push ---- - -This component sets up integration with [Geofency](http://www.geofency.com/). Geofency is a [paid app](https://itunes.apple.com/app/id615538630) for iOS that lets users to configure a request that will be sent when a geofence or iBeacon region is entered or exited. This can be configured with Home Assistant to update your location. - -Enabling this component will automatically enable the [Geofency Device Tracker](/components/device_tracker.geofency/). - -To configure Geofency, you must set it up via the integrations panel in the configuration screen. You must then configure the iOS app (via the Webhook feature) to send a POST request to your Home Assistant server at the webhook URL provided by the integration during setup. Use the default POST format. Make sure to enable the 'Update Geo-Position' functionality for mobile beacons. - -When using mobile beacons (optional) an entry in `configuration.yaml` is still needed as this can't be added via the integrations panel. - -{% configuration %} -mobile_beacons: - description: List of beacon names that are to be treated as *mobile*. The name must match the name you configure in Geofency. By default, beacons will be treated as *stationary*. - required: false - type: list -{% endconfiguration %} - -A sample configuration for the `geofency` component when using mobile beacons is shown below: - -```yaml -# Example configuration.yaml entry -geofency: - mobile_beacons: - - car - - keys -``` From 3610ebc62d0ddcce59d26f434f89701d6ef7bef6 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 17 Apr 2019 21:57:15 +0200 Subject: [PATCH 04/50] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20references=20t?= =?UTF-8?q?o=20other=20pages=20(#9229)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_components/device_tracker.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index f6f70973e57..6f63703e70f 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -12,7 +12,7 @@ ha_release: 0.7 Home Assistant can get information from your wireless router or third party services like iCloud or OwnTracks to track which devices are connected and considered "in home". Please check the sidebar for a list of brands of supported wireless routers and services. -There are also trackers available which use different technologies like [MQTT](/components/mqtt/) or [Nmap](/components/device_tracker.nmap_tracker/) to scan the network for devices. +There are also trackers available which use different technologies like [MQTT](/components/mqtt/) or [Nmap](/components/nmap_tracker/) to scan the network for devices. An [event](/getting-started/automation-trigger/#event-trigger) (`device_tracker_new_device`) will be fired when a device is discovered for the first time. @@ -62,7 +62,7 @@ device_tracker: track_new_devices: true ``` -Multiple device trackers can be used in parallel, such as [Owntracks](/components/device_tracker.owntracks/#using-owntracks-with-other-device-trackers) and [Nmap](/components/device_tracker.nmap_tracker/). The state of the device will be determined by the source that reported last. +Multiple device trackers can be used in parallel, such as [Owntracks](/components/owntracks/#using-owntracks-with-other-device-trackers) and [Nmap](/components/nmap_tracker/). The state of the device will be determined by the source that reported last. ## {% linkable_title `known_devices.yaml` %} @@ -96,7 +96,7 @@ devicename: ## {% linkable_title Using GPS device trackers with local network device trackers %} -GPS based device trackers (like [OwnTracks](/components/device_tracker.owntracks/), [GPSLogger](/components/device_tracker.gpslogger) and others) can also be used with local network device trackers, such as [Nmap](/components/device_tracker.nmap_tracker/) or [Netgear](/components/device_tracker.netgear/). To do this, fill in the `mac` field to the entry in `known_devices.yaml` with the MAC address of the device you want to track. This way the state of the device will be determined by *the source that reported last*. The naming convention for known device list is `_` and could be set in the app configuration. +GPS based device trackers (like [OwnTracks](/components/owntracks/), [GPSLogger](/components/gpslogger) and others) can also be used with local network device trackers, such as [Nmap](/components/nmap_tracker/) or [Netgear](/components/netgear/). To do this, fill in the `mac` field to the entry in `known_devices.yaml` with the MAC address of the device you want to track. This way the state of the device will be determined by *the source that reported last*. The naming convention for known device list is `_` and could be set in the app configuration. An example showing the inclusion of the `mac` field for multiple platform tracking. The `mac` field was added to the GPS based device tracker entry and will enable tracking by all platforms that track via the `mac` address. From 2607c16e144ba8370689c1ee13494ea268fbfa5d Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 17 Apr 2019 21:57:32 +0200 Subject: [PATCH 05/50] =?UTF-8?q?=F0=9F=9A=9C=20Merges/Redirects=20GPSLogg?= =?UTF-8?q?er=20component=20pages=20(#9228)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_components/gpslogger.markdown | 69 ++++++++++++++++++++++-- source/_components/gpslogger.md | 77 --------------------------- 2 files changed, 64 insertions(+), 82 deletions(-) delete mode 100644 source/_components/gpslogger.md diff --git a/source/_components/gpslogger.markdown b/source/_components/gpslogger.markdown index 594b404763c..8f4e5549ac0 100644 --- a/source/_components/gpslogger.markdown +++ b/source/_components/gpslogger.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "GPSLogger Device Tracker" +title: "GPSLogger" description: "Instructions on how to use GPSLogger to track devices in Home Assistant." date: 2016-11-25 15:00 sidebar: true @@ -8,14 +8,73 @@ comments: false sharing: true footer: true logo: gpslogger.png -ha_category: Presence Detection +ha_category: + - Presence Detection ha_release: 0.34 +ha_iot_class: Cloud Push redirect_from: - /components/device_tracker.gpslogger/ --- -The `gpslogger` device tracker platform allows you to detect presence using [GPSLogger](http://code.mendhak.com/gpslogger/). +This component sets up integration with [GPSLogger](http://code.mendhak.com/gpslogger/). GPSLogger is an open source app for [Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) that allows users to set up a `POST` request to update GPS coordinates. This can be configured with Home Assistant to update your location. -

-You must have the [GPSLogger component](/components/gpslogger/) configured to use this device tracker. +Enabling this component will automatically enable the GPSLogger Device Tracker. + +## {% linkable_title Configuration %} + +To configure GPSLogger, you must set it up via the integrations panel in the configuration screen. This will give you the webhook URL to use during mobile device configuration (below). + +## {% linkable_title Setup on your smartphone %} + +Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. + +After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**. + +

+ + GPSLogger Settings

+ +Go to **Logging details** and disable **Log to GPX**, **Log to KML** and **Log to NMEA**. Enable **Log to custom URL**. + +

+ + Logging Details +

+ +Right after enabling, the app will take you to the **Log to custom URL** settings. + +

+ + Log to custom URL details +

+ +The relevant endpoint starts with: `/api/webhook/` and ends with a unique sequence of characters. This is provided by the integrations panel in the configuration screen (configured above). + +```text +https://YOUR.DNS.HOSTNAME:PORT/api/webhook/WEBHOOK_ID +``` + +- Add the above URL (updating YOUR.DNS.HOSTNAME:PORT to your details) into the **URL** field. +- It's HIGHLY recommended to use SSL/TLS. +- Use the domain that Home Assistant is available on the internet (or the public IP address if you have a static IP address). This can be a local IP address if you are using an always on VPN from your mobile device to your home network. +- Only remove `PORT` if your Home Assistant instance is using port 443. Otherwise set it to the port you're using. +- Add the following to **HTTP Body** +```text +latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT +``` +- You can change the `device_id` of your phone by replacing `&device=%SER` with `&device=SOME_DEVICE_ID`, otherwise your phone's serial number will be used. +- Check that the **HTTP Headers** setting contains +```text +Content-Type: application/x-www-form-urlencoded +``` +- Make sure that **HTTP Method** is changed to `POST` + +If your battery drains too fast then you can tune the performance of GPSLogger under **Performance** -> **Location providers** + +

+ + Performance +

+ +A request can be forced from the app to test if everything is working fine. A successful request will update the `known_devices.yaml` file with the device's serial number. diff --git a/source/_components/gpslogger.md b/source/_components/gpslogger.md deleted file mode 100644 index 36288143a7f..00000000000 --- a/source/_components/gpslogger.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -layout: page -title: "GPSLogger" -description: "Instructions on how to use GPSLogger to track devices in Home Assistant." -date: 2016-11-25 15:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: gpslogger.png -ha_category: Presence Detection -ha_release: 0.86 -ha_iot_class: Cloud Push ---- - -This component sets up integration with [GPSLogger](http://code.mendhak.com/gpslogger/). GPSLogger is an open source app for [Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) that allows users to set up a `POST` request to update GPS coordinates. This can be configured with Home Assistant to update your location. - -Enabling this component will automatically enable the [GPSLogger Device Tracker](/components/device_tracker.gpslogger/). - -## {% linkable_title Configuration %} - -To configure GPSLogger, you must set it up via the integrations panel in the configuration screen. This will give you the webhook URL to use during mobile device configuration (below). - -## {% linkable_title Setup on your smartphone %} - -Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. - -After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**. - -

- - GPSLogger Settings -

- -Go to **Logging details** and disable **Log to GPX**, **Log to KML** and **Log to NMEA**. Enable **Log to custom URL**. - -

- - Logging Details -

- -Right after enabling, the app will take you to the **Log to custom URL** settings. - -

- - Log to custom URL details -

- -The relevant endpoint starts with: `/api/webhook/` and ends with a unique sequence of characters. This is provided by the integrations panel in the configuration screen (configured above). - -```text -https://YOUR.DNS.HOSTNAME:PORT/api/webhook/WEBHOOK_ID -``` - -- Add the above URL (updating YOUR.DNS.HOSTNAME:PORT to your details) into the **URL** field. -- It's HIGHLY recommended to use SSL/TLS. -- Use the domain that Home Assistant is available on the internet (or the public IP address if you have a static IP address). This can be a local IP address if you are using an always on VPN from your mobile device to your home network. -- Only remove `PORT` if your Home Assistant instance is using port 443. Otherwise set it to the port you're using. -- Add the following to **HTTP Body** -```text -latitude=%LAT&longitude=%LON&device=%SER&accuracy=%ACC&battery=%BATT&speed=%SPD&direction=%DIR&altitude=%ALT&provider=%PROV&activity=%ACT -``` -- You can change the `device_id` of your phone by replacing `&device=%SER` with `&device=SOME_DEVICE_ID`, otherwise your phone's serial number will be used. -- Check that the **HTTP Headers** setting contains -```text -Content-Type: application/x-www-form-urlencoded -``` -- Make sure that **HTTP Method** is changed to `POST` - -If your battery drains too fast then you can tune the performance of GPSLogger under **Performance** -> **Location providers** - -

- - Performance -

- -A request can be forced from the app to test if everything is working fine. A successful request will update the `known_devices.yaml` file with the device's serial number. From 06b6ac75dfe2799bee3661bc9de73de73d8cd44a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 17 Apr 2019 14:23:56 -0700 Subject: [PATCH 06/50] Add note about custom components --- source/_posts/2019-04-24-release-92.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index b19f86e7560..3dec70ea5ad 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -11,7 +11,7 @@ categories: Release-Notes og_image: /images/blog/2019-04-release-92/components.png --- -- [Introducing integrations](https://developers.home-assistant.io/blog/2019/04/12/new-integration-structure.html) +- All custom components will need an `__init__.py` file, this can be empty. For custom component developers, see the blog post [Introducing integrations](https://developers.home-assistant.io/blog/2019/04/12/new-integration-structure.html) - Lovelace can stream cameras (pending docs). Add `camera_view: live` to picture glance, picture entity, picture elements. Warn, can use a lot of data. We are exploring being able to add a mode to only show it on desktop. - If you are still receiving a message that your configuration contains extra keys, this is the last release that this will be a warning. In the next release this will be an error and the integration won't set up. From 9bafd2d2ac9f81195ccda619dcc3dfa5291ec818 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 18 Apr 2019 01:39:31 -0700 Subject: [PATCH 07/50] Minor changes to improve iOS app experience --- source/.well-known/apple-app-site-association | 12 ++++++++++++ source/_includes/site/head.html | 2 ++ source/ios/nfc.markdown | 12 ++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 source/ios/nfc.markdown diff --git a/source/.well-known/apple-app-site-association b/source/.well-known/apple-app-site-association index 6355e8876f0..a8eb7cc9c58 100644 --- a/source/.well-known/apple-app-site-association +++ b/source/.well-known/apple-app-site-association @@ -7,6 +7,18 @@ "paths": [ "/ios/*" ] + }, + { + "appID": "UTQFCBPQRF.io.robbie.HomeAssistant.beta", + "paths": [ + "/ios/*" + ] + }, + { + "appID": "UTQFCBPQRF.io.robbie.HomeAssistant.dev", + "paths": [ + "/ios/*" + ] } ] } diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index e45b34cb78a..2bb426ee405 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -32,6 +32,8 @@ + + diff --git a/source/ios/nfc.markdown b/source/ios/nfc.markdown new file mode 100644 index 00000000000..8fb2cf089cc --- /dev/null +++ b/source/ios/nfc.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Home Assistant Companion for iOS NFC Landing" +description: "The landing page for NFC tags containing Home Assistant Companion URLs" +release_date: 2019-04-17 15:00:00 -0700 +sidebar: false +comments: false +sharing: true +footer: true +--- + +This is a placeholder that is required to support Universal Links and NFC tags in the [Home Assistant Companion for iOS app](/docs/ecosystem/ios). From 8fadd42aa64b9983d78e831d7d465dec8892ed47 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 18 Apr 2019 01:53:04 -0700 Subject: [PATCH 08/50] Dont add smart app banner --- source/_includes/site/head.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index 2bb426ee405..e45b34cb78a 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -32,8 +32,6 @@ - - From 9ddbc91c4365fcd724d1223417d3c00e3af4170a Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 18 Apr 2019 01:53:10 -0700 Subject: [PATCH 09/50] Disable sharing on NFC page --- source/ios/nfc.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ios/nfc.markdown b/source/ios/nfc.markdown index 8fb2cf089cc..80a6ecc1976 100644 --- a/source/ios/nfc.markdown +++ b/source/ios/nfc.markdown @@ -5,7 +5,7 @@ description: "The landing page for NFC tags containing Home Assistant Companion release_date: 2019-04-17 15:00:00 -0700 sidebar: false comments: false -sharing: true +sharing: false footer: true --- From 75b6f170b9f1a8ffce6c2d98815ba466a758abf0 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 18 Apr 2019 01:54:36 -0700 Subject: [PATCH 10/50] Reverse order of apps --- source/.well-known/apple-app-site-association | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/.well-known/apple-app-site-association b/source/.well-known/apple-app-site-association index a8eb7cc9c58..0ae5d0cf17a 100644 --- a/source/.well-known/apple-app-site-association +++ b/source/.well-known/apple-app-site-association @@ -3,7 +3,7 @@ "apps": [], "details": [ { - "appID": "UTQFCBPQRF.io.robbie.HomeAssistant", + "appID": "UTQFCBPQRF.io.robbie.HomeAssistant.dev", "paths": [ "/ios/*" ] @@ -15,7 +15,7 @@ ] }, { - "appID": "UTQFCBPQRF.io.robbie.HomeAssistant.dev", + "appID": "UTQFCBPQRF.io.robbie.HomeAssistant", "paths": [ "/ios/*" ] From 6f8d780b59d33b8376627315fe665a6e4fcc2104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marius=20Bal=C4=8Dytis?= Date: Thu, 18 Apr 2019 13:06:06 +0300 Subject: [PATCH 11/50] Fixes documentation for HSTS configuration options (#9238) If `"hsts"` is removed or `null` is provided, configuration cannot be saved. --- source/_addons/nginx_proxy.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown index 4bf6c3ad9af..b0e29ece559 100644 --- a/source/_addons/nginx_proxy.markdown +++ b/source/_addons/nginx_proxy.markdown @@ -41,8 +41,8 @@ keyfile: required: true type: string hsts: - description: Value for the [`Strict-Transport-Security`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) HTTP header to send. If empty or `null`, the header is not sent. - required: false + description: Value for the [`Strict-Transport-Security`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security) HTTP header to send. If empty, the header is not sent. + required: true type: string customize: description: If true, additional NGINX configuration files for the default server and additional servers are read from files in the `/share` directory specified by the `default` and `servers` variables. From 1d6a2ac671bf10497fbd65a4dfe52ca81fb6ee32 Mon Sep 17 00:00:00 2001 From: Benji Date: Thu, 18 Apr 2019 12:08:09 +0200 Subject: [PATCH 12/50] Fix MDI cheatsheat link & update to latest in-use version (#9242) --- source/_docs/configuration/customizing-devices.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 0ef2263845c..22215e1dda4 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -58,7 +58,7 @@ entity_picture: required: false type: string icon: - description: Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com) ([Cheatsheet](https://materialdesignicons.com/cheatsheet)). Prefix name with `mdi:`, ie `mdi:home`. + description: Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com) ([Cheatsheet](https://cdn.materialdesignicons.com/3.5.95/)). Prefix name with `mdi:`, ie `mdi:home`. required: false type: string assumed_state: From c12dfcb0b39a3acbd075586d4930ee090a6a9fcd Mon Sep 17 00:00:00 2001 From: ral <883611+leitonp@users.noreply.github.com> Date: Thu, 18 Apr 2019 12:08:48 +0200 Subject: [PATCH 13/50] yeelight model rgb is color1 (#9207) In example yeelight model 'rgb' must be 'color1' --- source/_components/yeelight.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/yeelight.markdown b/source/_components/yeelight.markdown index b76b3148fb5..9a04f4be256 100644 --- a/source/_components/yeelight.markdown +++ b/source/_components/yeelight.markdown @@ -27,7 +27,7 @@ After the lights are connected to the WiFi network and have been detected in Hom ```yaml # Example customize.yaml entry -light.yeelight_rgb_XXXXXXXXXXXX: +light.yeelight_color1_XXXXXXXXXXXX: friendly_name: Living Room light.yeelight_color2_XXXXXXXXXXXX: friendly_name: Downstairs Toilet From 95cbc0f701fc0465137505c3a8552ad815ef5d47 Mon Sep 17 00:00:00 2001 From: Kevin Fronczak Date: Thu, 18 Apr 2019 06:09:52 -0400 Subject: [PATCH 14/50] Add example scripts and automatons for Blink (#9199) * Add example scripts and automatons for Blink * Missing end quote * Added raw tags, better time template --- source/_components/blink.markdown | 80 +++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown index 741f82d4519..0232e4de8d4 100644 --- a/source/_components/blink.markdown +++ b/source/_components/blink.markdown @@ -142,3 +142,83 @@ homeassistant: ### {% linkable_title Other Services %} In addition to the services mentioned above, there are generic `camera` and `alarm_control_panel` services available for use as well. The `camera.enable_motion_detection` and `camera.disable_motion_detection` services allow for individual cameras to be enabled and disabled, respectively, within the Blink system. The `alarm_control_panel.alarm_arm_away` and `alarm_control_panel.alarm_disarm` services allow for the whole system to be armed and disarmed, respectively. + + +## {% linkable_title Examples %} + +The following are some examples showing how to correctly make service calls using Blink: + +### {% linkable_title Snap Picture and Save Locally %} + +This example script shows how to take a picture with your camera, named `My Camera` in your Blink app (this is **not necessarily** the friendly name in home-assistant). After snapping a picture, the image will then be saved to a local directory called `/tmp/my_image.jpg`. Note that this example makes use of services found in the [camera component](https://www.home-assistant.io/components/camera#service-snapshot) + +```yaml +alias: Blink Snap Picture +sequence: + - service: blink.trigger_camera + data: + name: "My Camera" + - delay: 00:00:05 + - service: blink.blink_update + - service: camera.snapshot + data: + entity_id: camera.blink_my_camera + filename: /tmp/my_image.jpg +``` + +### {% linkable_title Arm Blink When Away %} + +This example automation will arm your blink sync module to detect motion on any of your blink cameras that have motion detection enabled. By default, Blink enables motion detection on all cameras so, unless you've changed anything in your app, you're all set. If you want to manually enable motion detection for individual cameras, you can utilize the [appropriate camera service](https://www.home-assistant.io/components/camera#service-enable_motion_detection) but pelase note that motion will only be captured if the sync module is armed. + +Here, this example assumes your blink module is named `My Sync Module` and that you have [device trackers](https://www.home-assistant.io/components/device_tracker) set up for presence detection. + +```yaml +- id: arm_blink_when_away + alias: Arm Blink When Away + trigger: + platform: state + entity_id: group.all_devices + to: 'not_home' + action: + service: alarm_control_panel.alarm_arm_away + entity_id: alarm_control_panel.blink_my_sync_module +``` + +### {% linkable_title Disarm Blink When Home %} + +Similar to the previous example, this automation will disarm blink when arriving home. + +```yaml +- id: disarm_blink_when_home + alias: Disarm Blink When Home + trigger: + platform: state + entity_id: group.all_devices + to: 'home' + action: + service: alarm_control_panel.alarm_disarm + entity_id: alarm_control_panel.blink_my_sync_module +``` + +### {% linkable_title Save Video Locally When Motion Detected %} + +When motion is detected, you can use the Blink Home-Assistant integration to save the last recorded video locally, rather than relying on Blink's servers to save your data. + +Again, this example assumes your camera's name (in the blink app) is `My Camera` and your sync module name is `My Sync Module`. The file will be saved to `/tmp/videos/blink_video_{YYYMMDD_HHmmSS}.mp4` where `{YYYYMMDD_HHmmSS}` will be a timestamp create via the use of [templating](https://www.home-assistant.io/docs/configuration/templating/). + +{% raw %} +```yaml +- id: save_blink_video_on_motion + alias: Save Blink Video on Motion + trigger: + platform: state + entity_id: binary_sensor.blink_my_camera_motion_detected + to: 'on' + action: + service: blink.save_video + data: + name: "My Camera" + filename: "/tmp/videos/blink_video_{{ now().strftime('%Y%m%d_%H%M%S') }}.mp4" + +``` +{% endraw %} From f6709d71ac887a3ab6197e008ad668b85b618d7c Mon Sep 17 00:00:00 2001 From: Andrea G Date: Thu, 18 Apr 2019 10:54:12 -0700 Subject: [PATCH 15/50] Fixes upper case letter in the middle of sentence --- source/cloud/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/cloud/index.markdown b/source/cloud/index.markdown index 8c797896fca..982071d802a 100644 --- a/source/cloud/index.markdown +++ b/source/cloud/index.markdown @@ -13,7 +13,7 @@ ha_category: Voice ha_iot_class: Cloud Push --- -Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com) For more information on features, pricing and [how to configure Home Assistant](https://www.nabucasa.com/config/). +Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [their website](https://www.nabucasa.com) for more information on features, pricing and [how to configure Home Assistant](https://www.nabucasa.com/config/).
Logo of Nabu Casa, Inc
From 11ef9b1d38fa53faa97d1d83b3e83e67375ff828 Mon Sep 17 00:00:00 2001 From: cogneato Date: Thu, 18 Apr 2019 21:54:44 -0600 Subject: [PATCH 16/50] remove reference to panel_iframe (#9247) adding panel_custom configuration for adding entry to nav panel --- source/getting-started/configuration.markdown | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 0f2370a151d..54bd795bbb5 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -51,11 +51,16 @@ Time for the first practice with the configurator. We're going to add the Config - Copy and paste the following to the end of the `configuration.yaml` file: ```yaml -panel_iframe: - configurator: - title: Configurator - icon: mdi:wrench - url: http://hassio.local:3218 +panel_custom: + - name: hassio-main + sidebar_title: Configurator + sidebar_icon: hass:settings + js_url: /api/hassio/app/entrypoint.js + url_path: configurator + embed_iframe: true + require_admin: true + config: + ingress: core_configurator ``` - Click the save icon in the top right to commit changes. From 547cf37018d6ce563f45bb1b284fa726f0bab102 Mon Sep 17 00:00:00 2001 From: dtorner Date: Fri, 19 Apr 2019 13:54:52 +0200 Subject: [PATCH 17/50] Proper example indentation (#9253) --- source/_components/openalpr_local.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/openalpr_local.markdown b/source/_components/openalpr_local.markdown index d9800cae854..19005582ab0 100644 --- a/source/_components/openalpr_local.markdown +++ b/source/_components/openalpr_local.markdown @@ -53,9 +53,9 @@ $ wget -O- -q http://plates.openalpr.com/h786poj.jpg | alpr - ```yaml # Example configuration.yaml entry image_processing: - - platform: openalpr_local - region: eu - source: + - platform: openalpr_local + region: eu + source: - entity_id: camera.garage ``` From aca6d8614975bb0ddab5e7d0fcfaff0113f173f4 Mon Sep 17 00:00:00 2001 From: kbickar Date: Fri, 19 Apr 2019 08:01:55 -0400 Subject: [PATCH 18/50] Corrected default tilt open position (#9251) --- source/_components/cover.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cover.mqtt.markdown b/source/_components/cover.mqtt.markdown index a235da33c7d..05600527804 100644 --- a/source/_components/cover.mqtt.markdown +++ b/source/_components/cover.mqtt.markdown @@ -162,7 +162,7 @@ tilt_opened_value: description: The value that will be sent on an `open_cover_tilt` command. required: false type: integer - default: 0 + default: 100 tilt_status_optimistic: description: Flag that determines if tilt works in optimistic mode. required: false From 80b3a630a2e5c9dbee9ff2c1a57135d4b8800c47 Mon Sep 17 00:00:00 2001 From: Flsab Date: Sat, 20 Apr 2019 20:42:07 +0200 Subject: [PATCH 19/50] Update mosquitto.markdown (#9259) --- source/_addons/mosquitto.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index 41c8fdfb06a..49cd1062f2a 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -103,7 +103,8 @@ acl_file /share/mosquitto/accesscontrollist 3. Create `/share/mosquitto/accesscontrollist` with the contents: ```text -topic readwrite # +user your-mqtt-user +topic # ``` The `/share` folder can be accessed via SMB, or on the host filesystem under `/usr/share/hassio/share`. From 8963b7ae154f871b584cb3bc2df4bab480652240 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Sun, 21 Apr 2019 01:06:21 +0200 Subject: [PATCH 20/50] :pencil2: Fix the link to Dyson website (#9262) --- source/_components/dyson.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown index 256cf982b9e..ad19a515444 100644 --- a/source/_components/dyson.markdown +++ b/source/_components/dyson.markdown @@ -23,7 +23,7 @@ redirect_from: - /components/sensor.dyson/ --- -The `dyson` component is the main component to integrate all [Dyson](https://dyson.com) related platforms. +The `dyson` component is the main component to integrate all [Dyson](https://www.dyson.com) related platforms. There is currently support for the following device types within Home Assistant: From 7d4d6bc821ef18a8d21243b5de1a79f409772910 Mon Sep 17 00:00:00 2001 From: Allan Persson | Marathon Pepe <46043392+allanpersson@users.noreply.github.com> Date: Sun, 21 Apr 2019 12:46:48 +0200 Subject: [PATCH 21/50] Update samsungtv.markdown (#9266) --- source/_components/samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/samsungtv.markdown b/source/_components/samsungtv.markdown index ac346f14df4..3d1e6aa2586 100644 --- a/source/_components/samsungtv.markdown +++ b/source/_components/samsungtv.markdown @@ -112,6 +112,7 @@ Currently tested but not working models: - JU6800 - Unable to see state and unable to control - JU7000 - Unable to see state and unable to control (but port 8001 *is* open) - JU7500 - Unable to see state and unable to control +- MU6125 - Unable to see state and unable to control (Tested on UE58MU6125 on port 8001 and 8801) - MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on) None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, From 7c7b9bd9b784e03506d070726182a12fea6f101c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 21 Apr 2019 12:01:39 -0700 Subject: [PATCH 22/50] Simplify getting started (#9258) * Simplify getting started * Update automation.markdown * Update automation.markdown * Updates * Tweak --- .../asides/getting_started_navigation.html | 12 +- source/getting-started/automation-2.markdown | 108 ------------------ source/getting-started/automation.markdown | 57 ++++++--- source/getting-started/configuration.markdown | 90 ++++----------- source/getting-started/index.markdown | 56 +++++---- .../join-the-community.markdown | 24 ++++ source/getting-started/onboarding.markdown | 29 +++++ .../presence-detection.markdown | 27 ++--- source/getting-started/use.markdown | 22 ---- .../getting-started/automation-new-action.png | Bin 0 -> 52356 bytes .../getting-started/automation-new-blank.png | Bin 0 -> 49479 bytes .../automation-new-name-trigger.png | Bin 0 -> 52494 bytes .../images/getting-started/integrations.png | Bin 0 -> 46247 bytes 13 files changed, 166 insertions(+), 259 deletions(-) delete mode 100644 source/getting-started/automation-2.markdown create mode 100644 source/getting-started/join-the-community.markdown create mode 100644 source/getting-started/onboarding.markdown delete mode 100644 source/getting-started/use.markdown create mode 100644 source/images/getting-started/automation-new-action.png create mode 100644 source/images/getting-started/automation-new-blank.png create mode 100644 source/images/getting-started/automation-new-name-trigger.png create mode 100644 source/images/getting-started/integrations.png diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index 9d41bb402b1..771a222c91b 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -2,14 +2,14 @@ {% include edit_github.html %}
-

Getting Started Guide

+

Getting Started

diff --git a/source/getting-started/automation-2.markdown b/source/getting-started/automation-2.markdown deleted file mode 100644 index a7cb8201c32..00000000000 --- a/source/getting-started/automation-2.markdown +++ /dev/null @@ -1,108 +0,0 @@ ---- -layout: page -title: "Your Second Automation" -description: "Step by step guiding through making your second automation." -date: 2016-04-24 08:30 +0100 -sidebar: true -comments: false -sharing: true -footer: true -redirect_from: /getting-started/automation-create-first/ ---- - -After the scratch on the Automation surface, let's dive deeper and create the automation rule: **Turn on the lights when the sun sets** - -We are defining a [trigger](/docs/automation/trigger/) to track the sunset and tell it to fire when the sun is setting. When this event is triggered, the service `light.turn_on` is called without any parameters. Because we specify no parameters, it will turn on all the lights. - -```yaml -# Example configuration.yaml entry -automation: - alias: Turn on the lights when the sun sets - initial_state: true - hide_entity: false - trigger: - platform: sun - event: sunset - action: - service: light.turn_on -``` - -Starting with 0.28 automation rules can be reloaded from the [frontend](/components/automation/) and are shown by default. With [`hide_entity:`](/components/automation/) you can control this behavior. It's convenient if you are working on your rules, but when a rule is finished, and you don't want to see that rule in your frontend, you can set `hide_entity:` to `true`. To set an automation to be disabled when Home Assistant starts set `initial_state:` to `false`. - -After a few days of running this automation rule, you come to realize that this automation rule is not sufficient. It was already dark when the lights went on, and the one day you weren't home, the lights turned on anyway. Time for some tweaking. Let's add an offset to the sunset trigger and a [condition](/docs/automation/condition/) to only turn on the lights if anyone is home. - -```yaml -# Example configuration.yaml entry -automation: - alias: Turn on the lights when the sun sets - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - service: light.turn_on -``` - -Now you're happy, and all is good. You start to like this automation business and buy some more lights, this time you put them in the bedroom. But what you now realize is that when the sun is setting, the lights in the bedroom are also being turned on! Time to tweak the automation to only turn on the living room lights. - -The first thing you do is to look at the entities in the developer tools (second icon) in the app. You see the names of your lights, and you write them down: `light.table_lamp`, `light.bedroom`, `light.ceiling`. - -Instead of hard coding the entity IDs of the lights in the automation rule, we will set up a group. This will allow us to see the living room separate in the app and be able to address it from automation rules. - -So we tweak the config to add the group and have the automation rule only turn on the group. - -```yaml -# Example configuration.yaml entry -group: - living_room: - - light.table_lamp - - light.ceiling - -automation: - alias: Turn on the light when the sun sets - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - service: light.turn_on - entity_id: group.living_room -``` - -Christmas is coming along, and you decide to buy a remote switch to control the Christmas lights from Home Assistant. You can't claim to live in the house of the future if you're still manually turning on your Christmas lights! - -We hook the switch up to Home Assistant and grab the entity ID from the developer tools: `switch.christmas_lights`. We will update the group to include the switch and will change our [action](/docs/automation/action/). We are no longer able to call `light.turn_on` because we also want to turn on a switch. This is where `homeassistant.turn_on` comes to the rescue. This service is capable of turning on any entity. - -```yaml -# Example configuration.yaml entry -group: - living_room: - - light.table_lamp - - light.ceiling - - switch.christmas_lights - -automation: - alias: Turn on the lights when the sun sets - hide_entity: true - trigger: - platform: sun - event: sunset - offset: "-01:00:00" - condition: - condition: state - entity_id: group.all_devices - state: 'home' - action: - service: homeassistant.turn_on - entity_id: group.living_room -``` - -### [Next step: Presence detection »](/getting-started/presence-detection/) diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown index 2f420b19db4..e57580e4b6f 100644 --- a/source/getting-started/automation.markdown +++ b/source/getting-started/automation.markdown @@ -1,31 +1,52 @@ --- layout: page title: "Automating Home Assistant" -description: "Instructions to get started with Automation using Home Assistant." -date: 2016-09-26 21:00 +description: "A quick intro on getting your first automation going." +date: 2016-04-24 08:30 +0100 sidebar: true comments: false sharing: true footer: true +redirect_from: + - /getting-started/automation-create-first/ + - /getting-started/automation-2/ --- -When your devices are set up, it's time to put the cherry on the pie: **automation**. Home Assistant offers [a few built-in automations](/components/#automation) – but you'll be using the automation component to set up your own rules, for the most part. +When your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. -If you added a random sensor in the previous step then you can use that sensor for your very first automation: +In Home Assistant, open the menu by clicking on the top-left icon and click on configuration. Now click on automations. This is the automation screen from which you can manage all the automations in Home Assistant. -```yaml -automation: - - alias: Check sensor value and show notification - trigger: - platform: numeric_state - entity_id: sensor.random_sensor - above: 10 - action: - service: persistent_notification.create - data: - message: "Sensor value greater than 10" -``` +Click on the orange button at the bottom right to create a new automation. You are presented with a blank automation screen. -For further details about automation, please take the next step or the [automation documentation](/docs/automation/). +

+ +The automation editor. +

-### [Next step: Home Assistant Automation Part 2 »](/getting-started/automation-2/) +The first thing we will do is to set a name. Enter "Turn Lights On at Sunset". + +The second step is defining what should trigger our automation to run. In this case we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset. + +In the trigger section, click on the dropdown and change trigger type to "Sun". It allows us to pick between sunrise and sunset, go ahead and pick sunset. As we discussed, we want our automation to be triggered a little before the sun actually sets, so let's add `-0:30` to the offset. This indicates that we will trigger 30 minutes before the sun actually sets, neat! + +

+ +A new automation with a sun trigger filled in. +

+ +Once we have defined our trigger, scroll down to the action section. Make sure trigger type is set to "Call Service" and change the service to `light.turn_on`. For this automation we're going to turn on all lights, so let's change the service data to `{ "entity_id": "all" }`. + +

+ +A new automation with the action set up to turn on the lights. +

+ +Click the orange button to save the automation. Now wait till it's 30 minutes until the sun sets and see your automation magic! + +Further reading on automations: + +- [Triggers](/docs/automation/trigger/) +- [Conditions](/docs/automation/condition/) +- [Actions](/docs/automation/action/) + +### [Next step: Presence detection »](/getting-started/presence-detection/) diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 54bd795bbb5..dc342ae21c8 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Configure Home Assistant" +title: "Advanced Configuration" description: "Instructions to get Home Assistant configured." date: 2016-09-26 21:00 sidebar: true @@ -9,85 +9,43 @@ sharing: true footer: true --- -

-This guide applies only if you've installed Home Assistant via Hass.io. If you've used any other install method then [see here](/docs/configuration/) instead. +Until now we have been able to configure Home Assistant purely via the user interface. However, not all options are accessible via the user interface. The other options are accessible via the Home Assistant configuration file called `configuration.yaml`. A default one is created when Home Assistant started for the first time. + +

+This final step of the getting started only applies if you've installed Home Assistant via Hass.io. If you've used another installation method, [see here](/docs/configuration/).

-If you made it here, awesome! That means that you got Home Assistant up and running. It might have already found some of your networked devices. This is going to be fun! - -Home Assistant stores its configuration in a file called `configuration.yaml`. A default one is created when Home Assistant is started for the first time. Some of the things in the configuration file can be edited via the user interface, other parts require you to edit the configuration file directly. - -There are two common approaches to edit your configuration: via Samba/Windows Networking and via the HASS Configurator. Both of these are [official add-ons for Hass.io](/addons/). - -## {% linkable_title Installing Hass.io add-ons %} - -Hass.io add-ons are installed from the add-on store embedded in the Hass.io panel: - - - Open Home Assistant by navigating to [http://hassio.local:8123][local]. - - Click on the menu icon in the top left and select Hass.io in the sidebar. - - The Hass.io panel opens, now open the add-on store by clicking the shopping bag. - -[local]: http://hassio.local:8123 +We are going to help you make your first changes to `configuration.yaml`. To do this, we are going to install an add-on from the Hass.io add-on store: the HASS Configurator. To get to the add-on store, click on the menu icon in the top left, then click on Hass.io. On the new page, open the add-on store tab.

-From the Hass.io main panel open the add-on store. +From the Hass.io main panel, open the add-on store.

-### {% linkable_title Editing config via HASS Configurator %} +Under the "Core" section you will find HASS Configurator. -The first add-on we should install is the HASS Configurator. With the HASS Configurator, you'll be able to edit your Home Assistant configuration from the web interface. + - Click on Configurator and click on INSTALL. When installation is complete, the UI will go to the add-on details page for the configurator. + - Now start the add-on by clicking on START. + - Open the user interface by clcking on OPEN WEB UI. -Go to the add-on store (see the previous step), click on Configurator and click on "INSTALL". When installation is complete, the UI will go to the add-on details page for the configurator. Here you will be able to change settings, start and stop the add-on. Follow the steps below to setup the add-on. +Now let's make a small change using the configurator: we are going to change the name and location of your Home Assistant installation. - - "START" the add-on - - You will be able to click the "OPEN WEB UI" link to open the Web UI on a new window - - Type your username and password that you recently saved - -Time for the first practice with the configurator. We're going to add the Configurator to the main Home Assistant sidebar: - - - Click the folder icon in the top left of the configurator window to open the file browser sidebar. + - Click the folder icon in the top left of the configurator window to open the file browser sidebar. - Click the `configuration.yaml` file (in the `/config/` folder) to load it into the main Configurator edit window. - - Copy and paste the following to the end of the `configuration.yaml` file: - -```yaml -panel_custom: - - name: hassio-main - sidebar_title: Configurator - sidebar_icon: hass:settings - js_url: /api/hassio/app/entrypoint.js - url_path: configurator - embed_iframe: true - require_admin: true - config: - ingress: core_configurator -``` - + - Find the `homeassistant:` configuration block, which should be the first thing in `configuration.yaml`. In this block, update `name`, `latitude`, `longitude`, `unit_system` and `time_zone` to match yours. - Click the save icon in the top right to commit changes. - - Verify the configuration by going to the config panel (Configuration in the sidebar) -> General -> Click the "Check Config" button and you should get "Configuration valid!" - - Now Restart Home Assistant using the "restart" in the Server management section. + - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a config check. Do this by clicking on Configuration in the sidebar, click on General and click on the "Check Config" button. When it's valid, it will show the text "Configuration valid!". + - Now Restart Home Assistant using the "restart" in the Server management section on the same page. + +

+ +Screenshot of the "General" page in the configuration panel. +

### {% linkable_title Editing config via Samba/Windows Networking %} -Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can be installed from the Hass.io add-on store. +Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can also be installed from the Hass.io add-on store. This will make your configuration accessible via the network tab on your computer. -After you have installed it, click on START. Hass.io should now be available in the networking tab on your computer. Use a text editor like the free [Visual Studio Code](https://code.visualstudio.com/) to edit `configuration.yaml`. +Go to the add-on store and look for Samba in the core section. After you have installed the add-on, click on START. Hass.io should now be available in the networking tab on your computer. -## {% linkable_title Configuring integrations %} - -Now that you are able to edit the configuration, it's time to set up some of your devices and services. Each service and device will have its own instructions on how to be integrated. Find your devices and services on the [components overview page](/components/). - -

YAML can be a little daunting at first. A lot is possible! [Here is some more info.](/docs/configuration/devices/)

- -For your first integration, you'll create a virtual sensor that generates a random integer value between 0 and 20 every 30 seconds. - -To create this random value sensor [random values](/components/sensor.random/), enter the following to the bottom of your `configuration.yaml` file, and restart Home Assistant (remember it may take up to a minute for the service to restart): - -```yaml -sensor: - - platform: random -``` - -You'll know it worked when you see the new random sensor in your overview page. On the next page, we'll create an automation that uses this sensor to take an action. - -### [Next step: Automate Home Assistant »](/getting-started/automation/) +We suggest that to edit `configuration.yaml`, you use the free text editor [Visual Studio Code](https://code.visualstudio.com/) in combination with the [Home Assistant Config Helper extension](https://marketplace.visualstudio.com/items?itemName=keesschollaart.vscode-home-assistant). diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index eade77a5557..7635cb1c396 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -9,29 +9,47 @@ sharing: true footer: true --- -The goal of this getting started guide is to install [Hass.io](/hassio/) on a Raspberry Pi. Hass.io is our own all in one solution that turns your Raspberry Pi or another device into the ultimate home automation hub. +{% comment %} -Follow this guide if you want to get started with Home Assistant easily, or if you have no or little Linux experience. +Note for contributors: -

-For advanced users or if you have no Raspberry Pi at hand, check our [alternative installation methods](/docs/installation/). The [FAQ](/faq/#home-assistant-vs-hassio) explains more about the differences. -

+The getting started guide aims at getting new users get Home Assistant up and +running as fast as possible. Nothing else. All other things should not be +written down, as it creates a spaghetti of links and the user will lose focus. + +So here are guidelines: + + - Focus on the bare necessities. No remote port, no securing installation. The + defaults are good enough to get a system up and running for the first guide. + - Avoid or explain technical terms. + - Do not talk about YAML if it can be partially/fully done in UI. + - Do not tell people about stuff they can do later. This can be added to a + 2nd tier guide. + - The first page of the guide is for installation, hence hass.io specific. + Other pages should not refer to it except for the page introducing the last + page that introduces `configuration.yaml`. + +{% endcomment %} + +The goal of this getting started guide is to get Home Assistant running on a Raspberry Pi. The easiest way to do this is by using [Hass.io](/hassio/, which is our own all in one solution that turns Raspberry Pi's and another devices into the ultimate home automation hubs. + +Follow this guide if you want to get started with Home Assistant easily, or if you have no or little Linux experience. For advanced users or if you don't have a [device that is supported by this guide][supported], check our [alternative installation methods](/docs/installation/). Once you finish your alternative installation, you can continue at the [next step][next-step]. + +[supported]: /hassio/installation/ ### {% linkable_title Suggested hardware%} -We will need a few things to get started with installing Home Assistant. For best performance, we suggest the latest Raspberry Pi 3 Model B+. Links below are linking to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. +We will need a few things to get started with installing Home Assistant. The latest Raspberry Pi model makes a good and affordable starting point for your home automation journey. Links below are linking to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. - [Raspberry Pi 3 Model B+](http://a.co/ak2SQor) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 2.5A) - [Micro SD Card](http://a.co/gslOydD). Get one that is Class 10 as they are more reliable. Size 32 GB or bigger recommended. - SD Card reader. Part of most laptops, and also available as [standalone USB sticks](http://a.co/5FCyb0N) (the brand doesn't matter, just pick the cheapest) - Ethernet cable (optional, Hass.io can work with WiFi as well) -- A USB-Stick (optional, allows for unattended configuration) ### {% linkable_title Software requirements %} - Download the Hass.io image for [your device](/hassio/installation/) - Download [balenaEtcher] to write the image to an SD card -- Text Editor like [Visual Studio Code](https://code.visualstudio.com/) [balenaEtcher]: https://www.balena.io/etcher @@ -39,29 +57,23 @@ We will need a few things to get started with installing Home Assistant. For bes 1. Put the SD card in your SD card reader. 1. Open balenaEtcher, select the Hass.io image and flash it to the SD card. -1. WiFi and Static IP setup only: +1. Unmount the SD card and remove it from your SD card reader. +1. Only if you want to configure WiFi or a Static IP (requires USB stick): - Format a USB-Stick to FAT32 with volume-name `CONFIG`. - Create a folder named `network` in the root of the newly formatted USB-stick. - Within that folder create a file named `my-network` without extension. - - Copy one of [the examples] to the `my-network` file. + - Copy one of [the examples] to the `my-network` file and adjust accordingly. - Plug the USB-stick into the Raspberry Pi 3. -1. Unmount the SD card and remove it from your SD card reader. + 1. Insert the SD card into your Raspberry Pi 3. If you are going to use an Ethernet cable, connect that too. 1. Connect your Raspberry Pi to the power supply, so it turns on. 1. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant, which will take about 20 minutes. -1. Home Assistant will be available at [http://hassio.local:8123][local]. Shortly after the download has started, a simple preparation status page will be available at this URL. Point your browser there. The page refreshes automatically, and Home Assistant will be shown when the download is complete (this typically takes around 20 minutes). -1. Please remember to [secure your installation][secure] once you've finished with the installation process. +1. Home Assistant will be available at [http://hassio.local:8123][local]. If you are running an older Windows or have stricter network configuration, you might need to access Home Assistant at [http://hassio:8123][host]. [local]: http://hassio.local:8123 +[host]: http://hassio:8123 [the examples]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md -[secure]: /docs/configuration/securing/ -

-If your router doesn't support mDNS, then you'll have to use the IP address of your Pi instead of `hassio.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router. -

+### [Next step: Onboarding »][next-step] -

-When you're done, remember to set up regular backups of your configuration. These backups will protect you from hardware failure and mistakes. On Hass.io you have snapshots (which you should copy off to another system), but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_dropbox/) and many other ways. All that matters is that you set them up and test them regularly. -

- -### [Next step: Configuring Home Assistant »](/getting-started/configuration/) +[next-step]: /getting-started/onboarding/ diff --git a/source/getting-started/join-the-community.markdown b/source/getting-started/join-the-community.markdown new file mode 100644 index 00000000000..4b3afcf04d0 --- /dev/null +++ b/source/getting-started/join-the-community.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Join the Community" +description: "Part of the Home Assistant experience is the large world-wide community of tinkerers. Join us." +date: 2019-04-19 00:01 +sidebar: true +comments: false +sharing: true +footer: true +--- + +You made it here? Good job! You've been able to install Home Assistant and get a small taste of all the things that are possible. + +Now that you've got that going, let's see what is next: + + - Learn about [advanced configuration](/getting-started/configuration/) using `configuration.yaml` in our bonus step of the getting started guide. + - Join the community in [our forums] or [our chat]. + - Check out [video tutorials] on a wide range of Home Assistant related topics + +You're now ready to be a part of our world-wide community of tinkerers. Welcome! + +[our forums]: https://community.home-assistant.io/ +[our chat]: /join-chat/ +[video tutorials]: https://www.youtube.com/results?search_query=home+assistant diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown new file mode 100644 index 00000000000..80fbe7013e1 --- /dev/null +++ b/source/getting-started/onboarding.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "Onboarding Home Assistant" +description: "Instructions to get Home Assistant configured." +date: 2019-04-19 00:01 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Alright, you made it here. The tough part is done. + +With Home Assistant installed, it's time for doing the initial configuration. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and click on "create account". + +Now you're brought to the main screen of Home Assistant: the states screen. The states screen will show all your devices. So let's get that screen filled up! + +Open the menu on the top left and click on Configuration. On the next screen, click on Integrations. At this screen you will be able to set up integrations with Home Assistant. You might notice a "discovered" section, these are integrations that we found on your network and can easily be added with a few clicks. If your integrations are not discovered, find them in the list and click on configure. + +

+ +The integrations page in the configurations panel shows you all your configured integrations. +

+ +When each integration is done setting up, it will ask you to put the new devices in areas. Areas allow you to organize all the devices in your home. + +When you're done, navigate back to the states panel and voila, your devices are ready for you to control. + +### [Next step: Automate Home Assistant »](/getting-started/automation/) diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown index f1c51fcfa9f..1d84ce20386 100644 --- a/source/getting-started/presence-detection.markdown +++ b/source/getting-started/presence-detection.markdown @@ -9,10 +9,6 @@ sharing: true footer: true --- -

-We care about privacy. Collected data is only stored in your instance of Home Assistant. -

- Presence detection detects if people are home, which is the most valuable input for automation. Knowing who is home or where they are, will open a whole range of other automation options: - Send me a notification when my child arrives at school @@ -23,34 +19,31 @@ Presence detection detects if people are home, which is the most valuable input Screenshot of Home Assistant showing a school, work and home zone and two people.

-### {% linkable_title Setting it up %} +### {% linkable_title Adding presence detection %} -The device tracker component offers presence detection for Home Assistant. It supports three different methods for presence detection: scan for connected devices on the local network, scan for Bluetooth devices within range, and connect to third-party service. +There are different ways of setting up presence detection. Usually the easiest way to detect presence is by checking which devices are connected to the network. You can do that if you have one of our [supported routers][routers]. By leveraging what your router already knows, you can easily detect if people are at home. -Scanning for connected devices is easy to setup; options include [supported routers][routers] and [scanning the network using Nmap][nmap]. This approach does have its limitations, however: it will only be able to detect if a device is at home, and modern smartphones may show as not home inaccurately (as they disconnect from WiFi if idle). +It's also possible to run an app on your phone to provide detailed location information to your Home Assistant instance. If you're on iOS we suggest to use the [Home Assistant iOS app](/ios/). For Android, we suggest [OwnTracks][ha-owntracks]. -You can scan for [Bluetooth][ha-bluetooth] and [Bluetooth LE][ha-bluetooth-le] devices. Unlike with WiFi, modern smartphones don't turn off Bluetooth automatically, though the range is lower. - -Home Assistant currently supports multiple third-party services for presence detection, such as [OwnTracks over MQTT][ha-owntracks-mqtt], [OwnTracks over HTTP][ha-owntracks-http] [GPSLogger][ha-gpslogger] and [Locative][ha-locative]. - -There is a wide [range of options][ha-presence] available, both for scanning your local network and third-party services. +
+ +
### {% linkable_title Zones %} -Home Assistant will know the location of your device if you are using a device tracker that reports a GPS location (such as OwnTracks, GPS Logger, the iOS app, and others). By [setting up zones][zone] you will be able to add names to the locations of your devices. This way you can easily spot on the state page where the people in your house are and use it as [triggers][trigger] and [conditions][condition] for automation. +Zones allow you to name areas on a map. These areas can then be used to name the location a tracked user is, or use entering/leaving a zone as an automation [trigger] or [condition]. Zones can be set up from the integration page in the configurations screen.

-If you're looking at the [map view][ha-map] then any devices in your Home zone won't be visible, this is by design. +The map view will hide all devices that are home.

[routers]: /components/#presence-detection [nmap]: /components/device_tracker.nmap_tracker/ [ha-bluetooth]: /components/device_tracker.bluetooth_tracker/ [ha-bluetooth-le]: /components/device_tracker.bluetooth_le_tracker/ -[ha-owntracks-mqtt]: /components/device_tracker.owntracks/ -[ha-owntracks-http]: /components/device_tracker.owntracks_http/ +[ha-owntracks]: /components/owntracks/ [ha-locative]: /components/device_tracker.locative/ [ha-gpslogger]: /components/device_tracker.gpslogger/ [ha-presence]: /components/#presence-detection @@ -61,4 +54,4 @@ If you're looking at the [map view][ha-map] then any devices in your Home zone w [condition]: /getting-started/automation-condition/#zone-condition [ha-map]: /components/map/ -### [Next step: Use Home Assistant »](/getting-started/use/) +### [Next step: Join the Community »](/getting-started/join-the-community/) diff --git a/source/getting-started/use.markdown b/source/getting-started/use.markdown deleted file mode 100644 index 941d78e02df..00000000000 --- a/source/getting-started/use.markdown +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: page -title: "Manage Home Assistant" -description: "Instructions about how to manage Home Assistant." -date: 2016-09-26 21:00 -sidebar: true -comments: false -sharing: true -footer: true ---- - -If you are using Hassbian, browse to [http://hassbian.local:8123](http://hassbian.local:8123) to open the Home Assistant frontend. - -To reload your configuration, go to **Configuration** in your side panel and choose "CHECK CONFIG". - -You will have to restart Home Assistant for most changes to `configuration.yaml` to take effect. You can load changes to [automations](/docs/automation/), [customize](/docs/configuration/customizing-devices/), [groups](/components/group/), and [scripts](/components/script/) without restarting. - -

- -

- -Now that you saw a glimpse of what is possible, take a look at the [documentation](/docs/), ask your questions in our [forum](https://community.home-assistant.io/), join us for a [chat](https://discord.gg/c5DvZ4e), or report your [issues](https://github.com/home-assistant/home-assistant/issues). diff --git a/source/images/getting-started/automation-new-action.png b/source/images/getting-started/automation-new-action.png new file mode 100644 index 0000000000000000000000000000000000000000..bd87cdf0fe1155b6234223528da92251ff8c3b37 GIT binary patch literal 52356 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 go*BP$ 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 Date: Sun, 21 Apr 2019 20:31:19 +0100 Subject: [PATCH 23/50] Tyop ;) (#9271) Typo with the link --- source/getting-started/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 7635cb1c396..fc4df08f71d 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -31,7 +31,7 @@ So here are guidelines: {% endcomment %} -The goal of this getting started guide is to get Home Assistant running on a Raspberry Pi. The easiest way to do this is by using [Hass.io](/hassio/, which is our own all in one solution that turns Raspberry Pi's and another devices into the ultimate home automation hubs. +The goal of this getting started guide is to get Home Assistant running on a Raspberry Pi. The easiest way to do this is by using [Hass.io](/hassio/), which is our own all in one solution that turns Raspberry Pi's and another devices into the ultimate home automation hubs. Follow this guide if you want to get started with Home Assistant easily, or if you have no or little Linux experience. For advanced users or if you don't have a [device that is supported by this guide][supported], check our [alternative installation methods](/docs/installation/). Once you finish your alternative installation, you can continue at the [next step][next-step]. From 6d63ab7e7d7397dc1c47f1c6312dedfb6c148230 Mon Sep 17 00:00:00 2001 From: apop880 <41379678+apop880@users.noreply.github.com> Date: Mon, 22 Apr 2019 03:19:35 -0500 Subject: [PATCH 24/50] Add troubleshooting step for re-enabling test if syncing doesn't work (#9274) --- source/_components/google_assistant.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index e9cc0c10d40..7d8679320e3 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -235,6 +235,8 @@ The request_sync service may fail with a 404 if the project_id of the Homegraph 3. Enable Homegraph API to the new project. 4. Generate a new API key. 5. Again, create a new project in the [Actions on Google console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this, they share the same `project_id`. + +Syncing may also fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is techincally in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant", this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. ### {% linkable_title Troubleshooting with NGINX %} From 2e7b4e34b3bf754866d5a23e391afd548272c73f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eir=C3=ADkur=20Haraldsson?= Date: Mon, 22 Apr 2019 09:29:22 +0000 Subject: [PATCH 25/50] Update calendar.google.markdown (#9273) * Update calendar.google.markdown * Add period --- source/_components/calendar.google.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/calendar.google.markdown b/source/_components/calendar.google.markdown index 1e1f87ffb93..381dfc96bfd 100644 --- a/source/_components/calendar.google.markdown +++ b/source/_components/calendar.google.markdown @@ -69,7 +69,8 @@ track_new_calendar: The next steps will require you to have Home Assistant running. -After you have it running complete the Google authentication that pops up. +After you have it running complete the Google authentication that pops up in notification (the little bell icon in the upper right corner). + It will give you a URL and a code to enter. This will grant your Home Assistant service access to all the Google Calendars that the account you authenticate with can read. This is a Read-Only view of these calendars. From ad39b4733ea0729e394771f35519c27b0fb02e2e Mon Sep 17 00:00:00 2001 From: Thibault Maekelbergh Date: Mon, 22 Apr 2019 22:15:01 +0200 Subject: [PATCH 26/50] Add screenshot for sensor.nmbs (#9278) --- source/_components/nmbs.markdown | 5 +++++ source/images/screenshots/nmbs-card-example.png | Bin 0 -> 51640 bytes 2 files changed, 5 insertions(+) create mode 100644 source/images/screenshots/nmbs-card-example.png diff --git a/source/_components/nmbs.markdown b/source/_components/nmbs.markdown index b6989a34944..84b568a90c0 100644 --- a/source/_components/nmbs.markdown +++ b/source/_components/nmbs.markdown @@ -62,3 +62,8 @@ show_on_map: type: boolean default: false {% endconfiguration %} + +

+ +

Example using the Lovelace Attributes card

+

diff --git a/source/images/screenshots/nmbs-card-example.png b/source/images/screenshots/nmbs-card-example.png new file mode 100644 index 0000000000000000000000000000000000000000..807c4af390145e9eeaa265dd8e01948912b9fd7b GIT binary patch literal 51640 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 Date: Wed, 24 Apr 2019 02:40:18 +1000 Subject: [PATCH 27/50] Fix indenting of template component examples (#9282) --- source/_components/template.markdown | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_components/template.markdown b/source/_components/template.markdown index 5d6c2ff2a8f..564fe2cb061 100644 --- a/source/_components/template.markdown +++ b/source/_components/template.markdown @@ -260,13 +260,13 @@ This template contains no entities that will trigger an update, so we add an `en {% raw %} ```yaml sensor: -- platform: template - sensors: - nonsmoker: - value_template: '{{ (( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(2) }}' - entity_id: sensor.date - friendly_name: 'Not smoking' - unit_of_measurement: "Days" + - platform: template + sensors: + nonsmoker: + value_template: '{{ (( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(2) }}' + entity_id: sensor.date + friendly_name: 'Not smoking' + unit_of_measurement: "Days" ``` {% endraw %} @@ -277,13 +277,13 @@ An alternative to this is to create an interval-based automation that calls the {% raw %} ```yaml sensor: -- platform: template - sensors: - nonsmoker: - value_template: '{{ (( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(2) }}' - entity_id: [] - friendly_name: 'Not smoking' - unit_of_measurement: "Days" + - platform: template + sensors: + nonsmoker: + value_template: '{{ (( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(2) }}' + entity_id: [] + friendly_name: 'Not smoking' + unit_of_measurement: "Days" automation: - alias: 'nonsmoker_update' From 5ee8780a292bc5a10a1f5d1d58aabd575ae9a594 Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 23 Apr 2019 13:01:21 -0600 Subject: [PATCH 28/50] Add breaking changes descriptions Descriptive breaking changes --- source/_posts/2019-04-24-release-92.markdown | 38 +++++++++++++------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index 3dec70ea5ad..feb65cb72de 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -57,19 +57,31 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Fix lightwave config validation ([@amelchio] - [#22576]) ([lightwave docs]) (breaking change) -- Amcrest: Add on/off support & attributes. Bump amcrest to 1.3.0 ([@pnbruckner] - [#22418]) ([amcrest docs]) (breaking change) -- Remove deprecated Insteon components ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) (breaking change) -- Logi Circle public API refactor and config flow ([@evanjd] - [#20624]) ([logi_circle docs]) (breaking change) -- Remove introduction component ([@balloob] - [#22944]) ([introduction docs]) (breaking change) -- Check for supported features in media_player services ([@andrewsayre] - [#22878]) ([media_player docs]) (breaking change) -- Google Assistant: Migrate light setting trait to use HSV color spectrum ([@balloob] - [#22980]) ([google_assistant docs]) (breaking change) -- Load requirements and dependencies from manifests. Fallback to current `REQUIREMENTS` and `DEPENDENCIES` ([@rohankapoorcom] - [#22717]) (breaking change) -- Add Satel_integra switchable outputs and multiple partitions ([@c-soft] - [#21992]) ([satel_integra docs]) (breaking change) (new-platform) -- Deprecate implicit state_topic for MQTT discovery ([@emontnemery] - [#22998]) ([mqtt docs]) (breaking change) -- Handle missing 'serialno' of Android TV ([@JeffLIrion] - [#22996]) ([androidtv docs]) (breaking change) -- Rename google/tts.py to google_translate/tts.py ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (breaking change) (new-integration) -- Changed scene unique IDs ([@pbalogh77] - [#22987]) ([fibaro docs]) (breaking change) +- __lightwave__ - Lightwave configuration was not properly validated before but it is now. This can cause invalid configurations to finally be flagged as such. ([@amelchio] - [#22576]) ([lightwave docs]) +- __Amcrest__ - Remove Build Date, Version and Serial Number attributes from sensors. These values do not change during the life of the device and are not appropriate for state attributes. ([@pnbruckner] - [#22418]) ([amcrest docs]) +- __Insteon__ - Placeholders that forwarded users from insteon_plm and insteon_local to insteon component have been removed. ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) +- __Logi Circle__ - This is a breaking change to the Logi Circle integration which migrates from Logitech's private API to their public API. + * Authentication with Logi Circle's API is now performed using an authorization code grant, and is managed by the Integrations page. It's no longer possible to authenticate with a username and password directly. Please remove any existing configuration for the logi_circle integration and follow the directions here to configure the logi_circle integration with at least a client_id, client_secret, api_key and redirect_uri. + * Logi Circle camera and sensor entities are now auto-discovered once the integration is authenticated. Users should remove the logi_circle integration from camera and sensor platforms as this is no longer supported. + * Logi Circle services have been moved from the camera domain to the logi_circle domain + + Please check the documentation for further details. ([@evanjd] - [#20624]) ([logi_circle docs]) +- __Introduction__ - The introduction integration has been removed. It used to be part of the initially created configuration but no longer served a purpose. ([@balloob] - [#22944]) ([introduction docs]) +- __media_player__ - The Media Player component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked as in the past they would have been.([@andrewsayre] - [#22878]) ([media_player docs]) +- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will get you improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) +- __Load requirements and dependencies from manifests__ - Developers: Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) +- __Satel_integra__ - The component now supports multiple partitions and this forced a configuration change. Instead of single parameters partition and single_home_mode there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) +- __MQTT__ - MQTT discovery will not longer implicitly set state_topic except for mqtt.alarm_control_panel, mqtt.binary_sensor and mqtt.sensor. ([@emontnemery] - [#22998]) ([mqtt docs]) +- __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) +- __Google TTS__ - The `google tts` platform has changed to `google_translate`. Default configs will be migrated to the new platform during 0.92 startup. A manual update will be required if the user has changed default tts or is loading the tts configuration from another location. ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (new-integration) +``` +# Text to speech +tts: + - platform: google_translate + service_name: google_say +``` + +- __Fibaro__ - There was a potential unique ID collision which caused problems for some users, as scenes and devices were enumerated separately, so the same ID could be assigned if they were unnamed. The unique ID generation has been changed to avoid this, which is a breaking change with regard to scenes. ([@pbalogh77] - [#22987]) ([fibaro docs]) ## {% linkable_title All changes %} From a6f72a93edbea92b3d12561c1d5af96ee28b26d2 Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 23 Apr 2019 13:04:49 -0600 Subject: [PATCH 29/50] small fixes --- source/_posts/2019-04-24-release-92.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index feb65cb72de..cd3cca12b37 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -57,7 +57,7 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- __lightwave__ - Lightwave configuration was not properly validated before but it is now. This can cause invalid configurations to finally be flagged as such. ([@amelchio] - [#22576]) ([lightwave docs]) +- __Lightwave__ - Lightwave configuration was not properly validated before but it is now. This can cause invalid configurations to finally be flagged as such. ([@amelchio] - [#22576]) ([lightwave docs]) - __Amcrest__ - Remove Build Date, Version and Serial Number attributes from sensors. These values do not change during the life of the device and are not appropriate for state attributes. ([@pnbruckner] - [#22418]) ([amcrest docs]) - __Insteon__ - Placeholders that forwarded users from insteon_plm and insteon_local to insteon component have been removed. ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) - __Logi Circle__ - This is a breaking change to the Logi Circle integration which migrates from Logitech's private API to their public API. @@ -70,7 +70,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - __media_player__ - The Media Player component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked as in the past they would have been.([@andrewsayre] - [#22878]) ([media_player docs]) - __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will get you improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) - __Load requirements and dependencies from manifests__ - Developers: Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) -- __Satel_integra__ - The component now supports multiple partitions and this forced a configuration change. Instead of single parameters partition and single_home_mode there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) +- __Satel Integra__ - The component now supports multiple partitions and this forced a configuration change. Instead of single parameters partition and single_home_mode there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) - __MQTT__ - MQTT discovery will not longer implicitly set state_topic except for mqtt.alarm_control_panel, mqtt.binary_sensor and mqtt.sensor. ([@emontnemery] - [#22998]) ([mqtt docs]) - __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) - __Google TTS__ - The `google tts` platform has changed to `google_translate`. Default configs will be migrated to the new platform during 0.92 startup. A manual update will be required if the user has changed default tts or is loading the tts configuration from another location. ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (new-integration) From 310938c767a5614e73305b005d90f05d263a06b3 Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 23 Apr 2019 13:11:50 -0600 Subject: [PATCH 30/50] More small fixes --- source/_posts/2019-04-24-release-92.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index cd3cca12b37..291f6d027b6 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -67,11 +67,11 @@ Experiencing issues introduced by this release? Please report them in our [issue Please check the documentation for further details. ([@evanjd] - [#20624]) ([logi_circle docs]) - __Introduction__ - The introduction integration has been removed. It used to be part of the initially created configuration but no longer served a purpose. ([@balloob] - [#22944]) ([introduction docs]) -- __media_player__ - The Media Player component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked as in the past they would have been.([@andrewsayre] - [#22878]) ([media_player docs]) -- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will get you improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) -- __Load requirements and dependencies from manifests__ - Developers: Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) -- __Satel Integra__ - The component now supports multiple partitions and this forced a configuration change. Instead of single parameters partition and single_home_mode there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) -- __MQTT__ - MQTT discovery will not longer implicitly set state_topic except for mqtt.alarm_control_panel, mqtt.binary_sensor and mqtt.sensor. ([@emontnemery] - [#22998]) ([mqtt docs]) +- __media_player__ - The `media_player` component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it would have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked where they would have previously.([@andrewsayre] - [#22878]) ([media_player docs]) +- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will result in improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) +- __Load requirements and dependencies from manifests__ - Developers - Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) +- __Satel Integra__ - The component now supports multiple partitions and this required a configuration change. Instead of a single parameters partition and `single_home_mode` there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) +- __MQTT__ - MQTT discovery will not longer implicitly set `state_topic` except for `mqtt.alarm_control_panel`, `mqtt.binary_sensor` and `mqtt.sensor`. ([@emontnemery] - [#22998]) ([mqtt docs]) - __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) - __Google TTS__ - The `google tts` platform has changed to `google_translate`. Default configs will be migrated to the new platform during 0.92 startup. A manual update will be required if the user has changed default tts or is loading the tts configuration from another location. ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (new-integration) ``` From df066c6ddb17aedadfa54936fc3060a2e936662a Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 23 Apr 2019 13:22:04 -0600 Subject: [PATCH 31/50] removed code box removed code for google tts --- source/_posts/2019-04-24-release-92.markdown | 7 ------- 1 file changed, 7 deletions(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index 291f6d027b6..bed1a6afcba 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -74,13 +74,6 @@ Experiencing issues introduced by this release? Please report them in our [issue - __MQTT__ - MQTT discovery will not longer implicitly set `state_topic` except for `mqtt.alarm_control_panel`, `mqtt.binary_sensor` and `mqtt.sensor`. ([@emontnemery] - [#22998]) ([mqtt docs]) - __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) - __Google TTS__ - The `google tts` platform has changed to `google_translate`. Default configs will be migrated to the new platform during 0.92 startup. A manual update will be required if the user has changed default tts or is loading the tts configuration from another location. ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (new-integration) -``` -# Text to speech -tts: - - platform: google_translate - service_name: google_say -``` - - __Fibaro__ - There was a potential unique ID collision which caused problems for some users, as scenes and devices were enumerated separately, so the same ID could be assigned if they were unnamed. The unique ID generation has been changed to avoid this, which is a breaking change with regard to scenes. ([@pbalogh77] - [#22987]) ([fibaro docs]) ## {% linkable_title All changes %} From 1f912cac3f722de6ac332042fea6c70160787d8d Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Wed, 24 Apr 2019 09:15:57 -0700 Subject: [PATCH 32/50] Promote ZHA to featured integration (#9285) --- source/_components/zha.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index 0d27ff75ff9..48cd48cfe9c 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -16,6 +16,7 @@ ha_category: - Switch ha_release: 0.44 ha_iot_class: Local Polling +featured: true redirect_from: - /components/binary_sensor.zha/ - /components/fan.zha/ From c420254e032a6f377eae13bf6ed96b9747f7aa07 Mon Sep 17 00:00:00 2001 From: Matt F Date: Wed, 24 Apr 2019 12:08:20 -0500 Subject: [PATCH 33/50] Link to hassio linux installer script (#9286) Link to the hassio Linux installer script was pointing to the incorrect path. --- source/hassio/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index b791391b54c..eb0fb7f2dd8 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -135,7 +135,7 @@ apt-get install -y apparmor-utils apt-transport-https avahi-daemon ca-certificat curl -fsSL get.docker.com | sh -curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install" | bash -s +curl -sL "https://raw.githubusercontent.com/home-assistant/hassio-installer/master/hassio_install.sh" | bash -s ```

From 63345e96efd8322f80fa0a49e7032c2059f2fd80 Mon Sep 17 00:00:00 2001 From: Kevin Cooper Date: Wed, 24 Apr 2019 14:48:55 +0100 Subject: [PATCH 34/50] Add command_template and value_template for MQTT alarm (#8729) * Update alarm_control_panel.mqtt.markdown * included command_template and code_disarm_required * mqtt alarm add value_template * :pencil2: Tweaks * :pencil2: Tweak --- .../alarm_control_panel.mqtt.markdown | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/source/_components/alarm_control_panel.mqtt.markdown b/source/_components/alarm_control_panel.mqtt.markdown index ad44be66baa..c7aebf5b465 100644 --- a/source/_components/alarm_control_panel.mqtt.markdown +++ b/source/_components/alarm_control_panel.mqtt.markdown @@ -56,6 +56,15 @@ command_topic: description: The MQTT topic to publish commands to change the alarm state. required: true type: string +command_template: + description: "The [template](/docs/configuration/templating/#processing-incoming-data) used for the command payload. Available variables: `action` and `code`." + required: false + type: string + default: action +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template qos: description: The maximum QoS level of the state topic. required: false @@ -86,7 +95,12 @@ code: required: false type: string code_arm_required: - description: If true the code is required to arm the alarm. + description: If true the code is required to arm the alarm. If false the code is not validated. + required: false + type: boolean + default: true +code_disarm_required: + description: If true the code is required to disarm the alarm. If false the code is not validated. required: false type: boolean default: true From 122377037e534a3e3738fc8b8c6cffab39f58f07 Mon Sep 17 00:00:00 2001 From: GeoffAtHome Date: Thu, 18 Apr 2019 16:08:05 +0200 Subject: [PATCH 35/50] Genius hub (#8815) * Manual registration/de-registration support. * Move registration/de-registration to a service. * :hammer: Move it to the right direction - Added variable configuration - Fixed the example script and split it * Added Genius Hub * Revert lightwvave changes. * Update markdown * fix a small bug * :pencil2: Tweak * token: and host: now separate * :pencil2: Tweak After this commit we can merge it and add it to the milestone * :pencil2: Tweak * :pencil2: Make urls clickable --- source/_components/geniushub.markdown | 77 +++++++++++++++++++ source/images/supported_brands/geniushub.png | Bin 0 -> 4861 bytes 2 files changed, 77 insertions(+) create mode 100644 source/_components/geniushub.markdown create mode 100644 source/images/supported_brands/geniushub.png diff --git a/source/_components/geniushub.markdown b/source/_components/geniushub.markdown new file mode 100644 index 00000000000..67fd4b2decf --- /dev/null +++ b/source/_components/geniushub.markdown @@ -0,0 +1,77 @@ +--- +layout: page +title: "Genius Hub" +description: "Instructions on how to integrate Genius Hub with Home Assistant." +date: 2019-03-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: geniushub.png +ha_category: + - Climate +ha_release: 0.92 +ha_iot_class: Local Polling +--- + +The `geniushub` integration links Home Assistant with your Genius Hub for controlling climate devices (the hub does not have to be in the same network as HA). + +Each Zone controlled by your Genius hub will report back the state, mode, setpoint and temperature. Other properties are available via the device's `state_attributes`. + +It uses this PyPi client library: [https://pypi.org/project/geniushub-client/](https://pypi.org/project/geniushub-client/) + +There are two distinct options for accessing a Genius Hub: + +### {% linkable_title Option 1: hub token only %} + + - requires a **hub token** obtained from [https://my.geniushub.co.uk/tokens](https://my.geniushub.co.uk/tokens) + - uses the v1 API - which is well-documented + - polls Heat Genius' own servers (so is slower, say 10-20s response time) + +### {% linkable_title Option 2: hub hostname/address with user credentials %} + + - requires your **username** & **password**, as used with [https://www.geniushub.co.uk/app](https://www.geniushub.co.uk/app) + - uses the v3 API - results are WIP and may not be what you expect + - polls the hub directly (so is faster, say 1s response time) + +## {% linkable_title Configuration %} + +To add your Genius Hub into your Home Assistant installation, add one of the following to your `configuration.yaml` file. + +If you want to poll Heat Genius' own servers: + +```yaml +# Example configuration.yaml entry, using a Hub Token +geniushub: + token: GENIUS_HUB_TOKEN +``` +Alternatively, if you want to poll the hub directly: + +```yaml +# Example configuration.yaml entry, directly polling the Hub +geniushub: + host: IP_ADDRESS + username: GENIUS_HUB_USERNAME + password: GENIUS_HUB_PASSWORD +``` + +Note that if a `host` is used instead of `token`, then the `username` and `password` are also required. + +{% configuration %} +token: + description: The Hub Token of the Genius Hub + required: true + type: string +host: + description: The hostname/IP address of the Genius Hub + required: true + type: string +username: + description: Your Genius Hub username + required: false + type: string +password: + description: Your Genius Hub password + required: false + type: integer +{% endconfiguration %} diff --git a/source/images/supported_brands/geniushub.png b/source/images/supported_brands/geniushub.png new file mode 100644 index 0000000000000000000000000000000000000000..52fda20117b8c6875182edd6e36a20125c274ac8 GIT binary patch literal 4861 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 Date: Wed, 24 Apr 2019 20:30:00 +0200 Subject: [PATCH 36/50] Updated docs for Google Hangout hub component (#8974) * Updated docs for google hangout hub component: Added information on how to authenticate using the authorization code, and also how to obtain the authorization code * :pencil2: Tweak * :pencil2: Remove some whitespaces --- source/_components/hangouts.markdown | 29 ++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/source/_components/hangouts.markdown b/source/_components/hangouts.markdown index 3d19fec7f15..377c3d7164b 100644 --- a/source/_components/hangouts.markdown +++ b/source/_components/hangouts.markdown @@ -27,16 +27,37 @@ There is currently support for the following device types within Home Assistant: Menu: *Configuration* -> *Integrations* Configure the integration: +* Enter your **Google Mail Address** and **Password** +* In the authentication form there is an Optional Field: **Authorization Code** which should only be used if you get an invalid login error with email and password (see note below for details). +* If you secured your account with 2-factor authentication you will be asked for a 2-factor authentication token. -- Enter your **Google Mail Address** and **Password** -- If you secured your account with 2-factor authentication you will be asked for a 2-factor authentication token. +## {% linkable_title Manual Authentication %} + +If you are sure your email and password are correct, but the component says the login is invalid then you would need to use the manual authentication method. + +To use the manual method, first you would need to obtain an authorization code (see instructions below for details). + +Once the code is obtained fill in the form with your email, password and the authorization code to complete authentication. + +### {% linkable_title Steps to obtain Authorization Code %}: + +1. To obtain your authorization code, open [this URL](https://accounts.google.com/o/oauth2/programmatic_auth?scope=https%3A%2F%2Fwww.google.com%2Faccounts%2FOAuthLogin+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&client_id=936475272427.apps.googleusercontent.com&device_name=hangups) in your browser. +2. Log into your Google account normally. +3. You should be redirected to a loading screen. Copy the `oauth_code` cookie value set by this page and paste it here. + +To obtain the `oauth_code` cookie value using Chrome or Firefox, follow the steps below: + +* Press F12 to open developer tools. +* Select the "Application" (Chrome) or "Storage" (Firefox) tab. +* In the sidebar, expand "Cookies" and select `https://accounts.google.com` +* In the cookie list, double click on the value for the `oauth_code` cookie to select it, and copy the value. This is the authorization code

You can't write messages to yourself or get notifications in a group, if "you" write the message. The best way is to create a new Google Hangouts account for this integration.

If you secured your account with 2-factor authentication: Only verification by app or SMS are supported. There is no support for verification by prompt on your phone.

-If you are sure your email and password are correct, but the component says the login is invalid, wait a few hours and try again. It might be that Google asks for a captcha which we can't support. Google does not provide official support for using bots with Google Hangouts, that's why we have to work around this. +The manual authentication work-around is a result of unofficial support for using bots in hangouts from Google.

The authentication token will be generated and stored internally. @@ -291,4 +312,4 @@ The conversations has to be precreated, the conversation id can be obtained from This may have more if the account is in multiple hangout conversations, for configuring the bot to be in a conversation you will need the ID that would be where `` is in that example. Make sure to use quotes around the conversation id or alias to escape special characters (`!`, and `#`) in YAML. -To use notifications, please see the [getting started with automation page](/getting-started/automation/). \ No newline at end of file +To use notifications, please see the [getting started with automation page](/getting-started/automation/). From c3e0685a7b996a817cbe04e904f323fb92f5cc18 Mon Sep 17 00:00:00 2001 From: Paul Madden Date: Wed, 24 Apr 2019 12:28:11 -0600 Subject: [PATCH 37/50] Docs for camera component of bom integration (#9166) * Add camera.bomradarcam.markdown * Rename camera.bomradarcam.markdown -> bomradarcam.markdown * Move docs for BOM camera into bom.markdown to reflect code reorg * :pencil2: Tweak * Update example using 'id' to use quoted string --- source/_components/bom.markdown | 114 +++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/source/_components/bom.markdown b/source/_components/bom.markdown index cfdafebc97c..f9265b83145 100644 --- a/source/_components/bom.markdown +++ b/source/_components/bom.markdown @@ -11,6 +11,7 @@ logo: bom.png ha_category: - Weather - Sensor + - Camera ha_release: 0.36 ha_iot_class: Cloud Polling redirect_from: @@ -22,6 +23,7 @@ The `bom` weather platform uses the [Australian Bureau of Meteorology (BOM)](htt There is currently support for the following device types within Home Assistant: +- [Camera](#camera) - [Sensor](#sensor) ## {% linkable_title Configuration %} @@ -51,6 +53,116 @@ This platform is an alternative to the [`bom`](#sensor) sensor. The weather platform is easier to configure but less customizable.

+## {% linkable_title Camera %} + +The `bom` camera platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) [radar web service](http://www.bom.gov.au/australia/radar/) as a source to generate an animated radar image. + +To add the BOM camera to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: bom + location: YOUR_LOCATION +``` + +See below for a list of valid `location` values, and subsitute one for `YOUR_LOCATION`. + +{% configuration %} +location: + description: Required unless `id` is specified. See below for a list of valid locations. + required: true + type: string +name: + description: Allows you to override the Home Assistant-generated camera name. + required: false + type: string +id: + description: Allows you to manually specify a BOM Radar ID (either `location` or `id` must be defined, but not both). + required: false + type: integer +delta: + description: Time in seconds between BOM radar images available for this radar. Optional if `location` is defined; required if `id` is defined. + required: false + type: integer +frames: + description: Number of frames in the animated GIF. Optional if `location` is defined; required if `id` is defined. + required: false + type: integer +filename: + description: Periodically save the animated GIF image to this filesystem path. + required: false + type: string +{% endconfiguration %} + +### {% linkable_title Valid `location` values %} + +``` +Adelaide Albany AliceSprings Bairnsdale Bowen +Brisbane Broome Cairns Canberra Carnarvon +Ceduna Dampier Darwin Emerald Esperance +Geraldton Giles Gladstone Gove Grafton +Gympie HallsCreek Hobart Kalgoorlie Katherine +Learmonth Longreach Mackay Marburg Melbourne +Mildura Moree MorningtonIs MountIsa MtGambier +Namoi Newcastle Newdegate NorfolkIs NWTasmania +Perth PortHedland SellicksHill SouthDoodlakine Sydney +Townsville WaggaWagga Warrego Warruwi Watheroo +Weipa WillisIs Wollongong Woomera Wyndham +Yarrawonga +``` + +### {% linkable_title Examples %} + +#### {% linkable_title Using `location` and `name` %} + +Example `configuration.yaml` entry to display the `Townsville` radar with a camera named `mytowsvilleradar`: + +```yaml +camera: + - platform: bom + name: mytownsvilleradar + location: Townsville +``` + +#### {% linkable_title Using `id`, `delta` and `frames` %} + +In the event BOM creates a new radar, or a radar's ID changes, you may define a custom `id` along with corresponding `delta` and `frames` values. You may also specify custom `delta` and `frames` values, along with a valid `location`, to override the default values for an existing radar. You may not define `location` and `id` in the same entity; you must specify one or the other. If `id` is specified, then `delta` and `frames` values _must_ be provided. If `location` is specified, `delta` and `frames` _may_ be provided to override the default values. + +To find a live radar ID (e.g. for the `Townsville` radar), visit the [BOM website's radars page](http://www.bom.gov.au/australia/radar/), click the link for the radar you are interested in, and note the URL, for example: `http://www.bom.gov.au/products/IDR733.loop.shtml`. The ID is the number following `IDR` (i.e. `733`) in the URL. You can also see, at the bottom of the radar image, a rotating set of times corresponding to the frames of the BOM's JavaScript-driven animation. The number of minutes (in seconds) between these times corresponds to the camera's `delta` value, and the number of frames corresponds to the `frames` value. At the time of this writing, the `Townsville` radar loop is composed of 4 frames at 10-minute (600 second) intervals. Since these are also the default values, this configuration block + +```yaml +camera: + - platform: bom + location: Townsville +``` + +is equivalent to this one + +```yaml +camera: + - platform: bom + id: '053' + delta: 600 + frames: 4 + name: 'Carnarvon' +``` + +#### {% linkable_title Using `filename` %} + +This option can be specified to save the animated radar-imagery GIF to the given filesystem path. + +Example `configuration.yaml` entry to display the `Sydney` radar and save the animated GIF to a file named `sydneyradar.gif` to the filesystem path accessible as `/local/sydneyradar.gif` via Home Assistant's web server: + +```yaml +camera: + - platform: bom + id: Sydney + filename: /config/www/images/sydneyradar.gif +``` + +The file will be updated every `delta` seconds when the camera regenerates the animation. + ## {% linkable_title Sensor %} The `bom` sensor platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) as a source for current (half-hourly) meteorological data. @@ -174,4 +286,4 @@ monitored_conditions:

This sensor is an alternative to the [`bom`](#configuration) weather platform. The weather platform is easier to configure but less customisable. -

\ No newline at end of file +

From 3571bf1b1f4f1c306502483f9bf5a39b810f2d62 Mon Sep 17 00:00:00 2001 From: Markus Jankowski Date: Mon, 22 Apr 2019 11:26:58 +0200 Subject: [PATCH 38/50] Addm Multi IO Box to switches (#9190) --- source/_components/homematicip_cloud.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/homematicip_cloud.markdown b/source/_components/homematicip_cloud.markdown index d6777d9e7d3..b92aae3aea1 100644 --- a/source/_components/homematicip_cloud.markdown +++ b/source/_components/homematicip_cloud.markdown @@ -134,7 +134,8 @@ authtoken: * Pluggable Switch (*HmIP-PS*) * Pluggable Switch and Meter (*HmIP-PSM*) - should also work with (*HmIP-PSM-CH, -IT, -UK, -PE*) * Switch Actuator for brand switches – with signal lamp (*HmIP-BSL*) - * Open Collector Module Receiver - 8x (*HmIP-MOD-OC8) + * Open Collector Module Receiver - 8x (*HmIP-MOD-OC8*) + * Multi IO Box - 2x (*HmIP-MIOB*) * homematicip_cloud.weather * Weather Sensor – basic (*HmIP-SWO-B*) From fca64625de22f02359dd855d523227eaafadb150 Mon Sep 17 00:00:00 2001 From: Pawel Date: Wed, 24 Apr 2019 20:27:38 +0200 Subject: [PATCH 39/50] MQTT vacuum send_command description (#9222) * send_command description * :pencil2: Tweak --- source/_components/vacuum.mqtt.markdown | 56 ++++++++++++++++++------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/source/_components/vacuum.mqtt.markdown b/source/_components/vacuum.mqtt.markdown index f27641373e0..97bb068e574 100644 --- a/source/_components/vacuum.mqtt.markdown +++ b/source/_components/vacuum.mqtt.markdown @@ -50,12 +50,12 @@ retain: type: boolean default: false payload_turn_on: - description: "The payload to send to the `command_topic` to begin the cleaning cycle." + description: The payload to send to the `command_topic` to begin the cleaning cycle. required: false type: string default: turn_on payload_turn_off: - description: "The payload to send to the `command_topic` to turn the vacuum off." + description: The payload to send to the `command_topic` to turn the vacuum off. required: false type: string default: turn_off @@ -89,7 +89,7 @@ battery_level_topic: required: false type: string battery_level_template: - description: "Defines a [template](/topics/templating/) to define the battery level of the vacuum." + description: Defines a [template](/topics/templating/) to define the battery level of the vacuum. required: false type: string charging_topic: @@ -97,7 +97,7 @@ charging_topic: required: false type: string charging_template: - description: "Defines a [template](/topics/templating/) to define the charging state of the vacuum." + description: Defines a [template](/topics/templating/) to define the charging state of the vacuum. required: false type: string cleaning_topic: @@ -105,7 +105,7 @@ cleaning_topic: required: false type: string cleaning_template: - description: "Defines a [template](/topics/templating/) to define the cleaning state of the vacuum." + description: Defines a [template](/topics/templating/) to define the cleaning state of the vacuum. required: false type: string docked_topic: @@ -113,7 +113,7 @@ docked_topic: required: false type: string docked_template: - description: "Defines a [template](/topics/templating/) to define the docked state of the vacuum." + description: Defines a [template](/topics/templating/) to define the docked state of the vacuum. required: false type: string error_topic: @@ -121,7 +121,7 @@ error_topic: required: false type: string error_template: - description: "Defines a [template](/topics/templating/) to define potential error messages emitted by the vacuum." + description: Defines a [template](/topics/templating/) to define potential error messages emitted by the vacuum. required: false type: string fan_speed_topic: @@ -129,7 +129,7 @@ fan_speed_topic: required: false type: string fan_speed_template: - description: "Defines a [template](/topics/templating/) to define the fan speed of the vacuum." + description: Defines a [template](/topics/templating/) to define the fan speed of the vacuum. required: false type: string set_fan_speed_topic: @@ -211,7 +211,7 @@ vacuum: The above configuration for this component expects an MQTT protocol like the following. -#### Basic Commands +#### {% linkable_title Basic Commands %} MQTT topic: `vacuum/command` @@ -225,7 +225,7 @@ Possible MQTT payloads: - `locate` - Locate the vacuum (typically by playing a song) - `start_pause` - Toggle the vacuum between cleaning and stopping -#### Set Fan Speed +#### {% linkable_title Set Fan Speed %} MQTT topic: `vacuum/set_fan_speed` @@ -236,13 +236,41 @@ Possible MQTT payloads: - `high` - High fan speed - `max` - Max fan speed -#### Send Custom Command +#### {% linkable_title Send Custom Command %} + +Vacuum send_command allows three parameters: + +- entity_id +- command +- params - optional + +If params are not provided it sends command as payload to MQTT send_command topic. +If params are provided service sends json as payload with such structure: +``` +{ + 'command': 'command', + 'param1-key': 'param1-value' +} +``` + +Service trigger example: +``` +- alias: Push command based on sensor + trigger: + - platform: state + entity_id: sensor.sensor + action: + service: vacuum.send_command + data: + entity_id: 'vacuum.vacuum_entity' + command: 'custom_command' + params: + - key: value +``` MQTT topic: `vacuum/send_command` -MQTT payload for `send_command` can be an arbitrary value handled by the vacuum's MQTT-enabled firmware. - -#### Status/Sensor Updates +#### {% linkable_title Status/Sensor Updates %} MQTT topic: `vacuum/state` From b950521a6496a020fd3ffee3db36f358da272237 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Sun, 21 Apr 2019 00:36:48 -0700 Subject: [PATCH 40/50] Google Translate tts (#9223) --- ...{google.markdown => google_translate.markdown} | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) rename source/_components/{google.markdown => google_translate.markdown} (73%) diff --git a/source/_components/google.markdown b/source/_components/google_translate.markdown similarity index 73% rename from source/_components/google.markdown rename to source/_components/google_translate.markdown index acd9353c230..cb052015c4a 100644 --- a/source/_components/google.markdown +++ b/source/_components/google_translate.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Google Text-to-Speech" -description: "Instructions on how to setup Google Text-to-Speech with Home Assistant." +title: "Google Translate Text-to-Speech" +description: "Instructions on how to setup Google Translate Text-to-Speech with Home Assistant." date: 2016-12-13 07:00 sidebar: true comments: false @@ -12,9 +12,14 @@ ha_category: Text-to-speech ha_release: 0.35 redirect_from: - /components/tts.google/ + - /components/google/ --- -The `google` text-to-speech platform uses [Google Text-to-Speech engine](https://console.developers.google.com/apis/library/texttospeech.googleapis.com) Text-to-Speech engine to read a text with natural sounding voices. +The `google_translate` text-to-speech platform uses unofficial [Google Translate Text-to-Speech engine](https://translate.google.com/) to read a text with natural sounding voices. + +

+This platform renamed to `google_translate` from `google` since release 0.92 +

## {% linkable_title Configuration %} @@ -23,7 +28,7 @@ To enable text-to-speech with Google, add the following lines to your `configura ```yaml # Example configuration.yaml entry tts: - - platform: google + - platform: google_translate ``` {% configuration %} @@ -44,7 +49,7 @@ A full configuration sample including optional variables: ```yaml # Example configuration.yaml entry tts: - - platform: google + - platform: google_translate language: 'de' ``` From bba740336141886819fbbfc9a9c90ce8c9c0d6e1 Mon Sep 17 00:00:00 2001 From: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com> Date: Sat, 20 Apr 2019 20:40:28 -0500 Subject: [PATCH 41/50] Add debug info and cleanup (#9263) --- source/_components/heos.markdown | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/source/_components/heos.markdown b/source/_components/heos.markdown index eb6c3687e88..3c059b100c4 100644 --- a/source/_components/heos.markdown +++ b/source/_components/heos.markdown @@ -1,6 +1,6 @@ --- layout: page -title: "Denon HEOS speakers" +title: "Denon HEOS" description: "Instructions on how to integrate Denon HEOS into Home Assistant." date: 2019-03-06 22:00 sidebar: true @@ -13,13 +13,13 @@ ha_release: 0.92 ha_iot_class: Local Push --- -The HEOS component integrates [HEOS](http://heosbydenon.denon.com) capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. Features currently include: +The HEOS integration adds support for [HEOS](http://heosbydenon.denon.com) capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. Features currently include: - Each device is represented as a media player entity - View the currently playing media -- Control play mode (play, pause, stop), volume, and mute -- Clear playlist support -- Play previous and next tracks +- Control play mode (play, pause, stop, next and previous), volume, mute and shuffle +- Clear playlist +- Select source from device physical inputs and HEOS favorites ## {% linkable_title Configuration %} @@ -40,10 +40,23 @@ host: {% endconfiguration %}

-A connection to a single device enables control for all devices in the HEOS account. If you have multiple HEOS devices, enter the host of one that is connected to the LAN via wire or has the strongest wireless signal. +A connection to a single device enables control for all devices on the network. If you have multiple HEOS devices, enter the host of one that is connected to the LAN via wire or has the strongest wireless signal.

## {% linkable_title Notes %} - HEOS groups are not currently supported. -- Receivers with multiple zones are represented as a single media player. They can be turned on, but not off by this integration. +- Receivers with multiple zones are represented as a single media player. They will be turned on when playback is started, but cannot be turned off by the integration at this time. + + +## {% linkable_title Debugging %} + +The HEOS component will log additional information about commands, events, and other messages when the log level is set to `debug`. Add the the relevent line below to the `configuration.yaml` to enable debug logging: + +```yaml +logger: + default: info + logs: + homeassistant.components.heos: debug + pyheos: debug +``` \ No newline at end of file From 0189036e19ac83eba02d704e59b6173434d81c84 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 24 Apr 2019 11:43:04 -0700 Subject: [PATCH 42/50] Add stub epson workforce --- source/components/epsonworkforce.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 source/components/epsonworkforce.markdown diff --git a/source/components/epsonworkforce.markdown b/source/components/epsonworkforce.markdown new file mode 100644 index 00000000000..9fa39a3d101 --- /dev/null +++ b/source/components/epsonworkforce.markdown @@ -0,0 +1,13 @@ +--- +layout: page +title: "Epson Workforce" +description: "Instructions on how to setup Epson Workforce with Home Assistant." +date: 2019-04-24 07:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_release: 0.92 +--- + +The Epson workforce integration. From 34320169d674d09b9520a41b80f6cd52cffe578c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 24 Apr 2019 11:55:46 -0700 Subject: [PATCH 43/50] Update notes --- source/_posts/2019-04-24-release-92.markdown | 174 +++++++++++++++++-- 1 file changed, 158 insertions(+), 16 deletions(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index bed1a6afcba..5c2dcafc1fc 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -15,12 +15,10 @@ og_image: /images/blog/2019-04-release-92/components.png - Lovelace can stream cameras (pending docs). Add `camera_view: live` to picture glance, picture entity, picture elements. Warn, can use a lot of data. We are exploring being able to add a mode to only show it on desktop. - If you are still receiving a message that your configuration contains extra keys, this is the last release that this will be a warning. In the next release this will be an error and the integration won't set up. - ## {% linkable_title New Integrations %} - Add N26 component ([@markusressel] - [#22684]) ([n26 docs]) (new-integration) (new-platform) - Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) -- Camera component for BOM integration ([@maddenp] - [#22816]) ([bomradarcam docs]) (new-integration) (new-platform) - Instituto Geográfico Nacional Sismología (Earthquakes) Feed platform ([@exxamalte] - [#22696]) ([ign_sismologia docs]) (new-integration) (new-platform) - Rename google/tts.py to google_translate/tts.py ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (breaking change) (new-integration) @@ -33,7 +31,7 @@ og_image: /images/blog/2019-04-release-92/components.png - Add OASA Telematics greek public transport sensor component ([@panosmz] - [#22196]) ([oasa_telematics docs]) (new-platform) - Initial Fibaro HC Climate support ([@pbalogh77] - [#20256]) ([fibaro docs]) (new-platform) - Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) -- Camera component for BOM integration ([@maddenp] - [#22816]) ([bomradarcam docs]) (new-integration) (new-platform) +- Camera component for BOM integration ([@maddenp] - [#22816]) ([bom docs]) (new-platform) - Add amcrest binary_sensors ([@pnbruckner] - [#22703]) ([amcrest docs]) (new-platform) - Binary sensors for netgear_lte ([@amelchio] - [#22902]) ([netgear_lte docs]) (new-platform) - Add ESPHome climate support ([@OttoWinter] - [#22859]) ([esphome docs]) (new-platform) @@ -44,6 +42,7 @@ og_image: /images/blog/2019-04-release-92/components.png - Simplify esphome ([@OttoWinter] - [#22868]) ([esphome docs]) (new-platform) - Genius hub ([@GeoffAtHome] - [#21598]) ([geniushub docs]) (new-platform) - Added epson workforce component ([@ThaStealth] - [#23144]) ([epsonworkforce docs]) (new-platform) +- Add basic support for native Hue sensors ([@mitchellrj] - [#22598]) ([hue docs]) (beta fix) (new-platform) ## {% linkable_title If you need help... %} @@ -57,24 +56,69 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- __Lightwave__ - Lightwave configuration was not properly validated before but it is now. This can cause invalid configurations to finally be flagged as such. ([@amelchio] - [#22576]) ([lightwave docs]) -- __Amcrest__ - Remove Build Date, Version and Serial Number attributes from sensors. These values do not change during the life of the device and are not appropriate for state attributes. ([@pnbruckner] - [#22418]) ([amcrest docs]) -- __Insteon__ - Placeholders that forwarded users from insteon_plm and insteon_local to insteon component have been removed. ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) +- __Lightwave__ - Lightwave configuration was not properly validated before but it is now. This can cause invalid configurations to finally be flagged as such. ([@amelchio] - [#22576]) ([lightwave docs]) +- __Amcrest__ - Remove Build Date, Version and Serial Number attributes from sensors. These values do not change during the life of the device and are not appropriate for state attributes. ([@pnbruckner] - [#22418]) ([amcrest docs]) +- __Insteon__ - Placeholders that forwarded users from insteon_plm and insteon_local to insteon component have been removed. ([@balloob] - [#22710]) - __Logi Circle__ - This is a breaking change to the Logi Circle integration which migrates from Logitech's private API to their public API. * Authentication with Logi Circle's API is now performed using an authorization code grant, and is managed by the Integrations page. It's no longer possible to authenticate with a username and password directly. Please remove any existing configuration for the logi_circle integration and follow the directions here to configure the logi_circle integration with at least a client_id, client_secret, api_key and redirect_uri. * Logi Circle camera and sensor entities are now auto-discovered once the integration is authenticated. Users should remove the logi_circle integration from camera and sensor platforms as this is no longer supported. * Logi Circle services have been moved from the camera domain to the logi_circle domain - - Please check the documentation for further details. ([@evanjd] - [#20624]) ([logi_circle docs]) -- __Introduction__ - The introduction integration has been removed. It used to be part of the initially created configuration but no longer served a purpose. ([@balloob] - [#22944]) ([introduction docs]) -- __media_player__ - The `media_player` component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it would have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked where they would have previously.([@andrewsayre] - [#22878]) ([media_player docs]) -- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will result in improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) -- __Load requirements and dependencies from manifests__ - Developers - Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) + + Please check the documentation for further details. ([@evanjd] - [#20624]) ([logi_circle docs]) +- __Introduction__ - The introduction integration has been removed. It used to be part of the initially created configuration but no longer served a purpose. ([@balloob] - [#22944]) ([introduction docs]) +- __media_player__ - The `media_player` component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it would have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked where they would have previously.([@andrewsayre] - [#22878]) ([media_player docs]) +- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will result in improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) +- __Load requirements and dependencies from manifests__ - Developers - Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) - __Satel Integra__ - The component now supports multiple partitions and this required a configuration change. Instead of a single parameters partition and `single_home_mode` there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) - __MQTT__ - MQTT discovery will not longer implicitly set `state_topic` except for `mqtt.alarm_control_panel`, `mqtt.binary_sensor` and `mqtt.sensor`. ([@emontnemery] - [#22998]) ([mqtt docs]) -- __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) +- __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) - __Google TTS__ - The `google tts` platform has changed to `google_translate`. Default configs will be migrated to the new platform during 0.92 startup. A manual update will be required if the user has changed default tts or is loading the tts configuration from another location. ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (new-integration) - __Fibaro__ - There was a potential unique ID collision which caused problems for some users, as scenes and devices were enumerated separately, so the same ID could be assigned if they were unnamed. The unique ID generation has been changed to avoid this, which is a breaking change with regard to scenes. ([@pbalogh77] - [#22987]) ([fibaro docs]) +- Ask users for a pin when interacting with locks/garage doors ([@balloob] - [#23223]) ([cloud docs]) ([google_assistant docs]) (breaking change) (beta fix) + +## {% linkable_title Beta Fixes %} + +- Kill bluetooth LE scanning gracefully when asked to shut down. ([@mitchellrj] - [#22586]) ([bluetooth_le_tracker docs]) (beta fix) +- Add basic support for native Hue sensors ([@mitchellrj] - [#22598]) ([hue docs]) (beta fix) (new-platform) +- Google assistant skip missing type ([@elupus] - [#23174]) ([google_assistant docs]) (beta fix) +- Fix empty components ([@balloob] - [#23177]) (beta fix) +- Don't warn for missing services ([@balloob] - [#23182]) (beta fix) +- Improve configuration schema for Geniushub integration ([@zxdavb] - [#23155]) ([geniushub docs]) (beta fix) +- Fix niko home control dependency installation ([@NoUseFreak] - [#23176]) ([niko_home_control docs]) (beta fix) +- Hass.io Add-on panel support for Ingress ([@pvizeli] - [#23185]) ([hassio docs]) (beta fix) +- Hue motion senors are motion sensors, not presence sensors. ([@mitchellrj] - [#23193]) ([hue docs]) (beta fix) +- Don't load component when fetching translations ([@balloob] - [#23196]) (beta fix) +- Create empty services.yaml for esphome ([@OttoWinter] - [#23200]) (beta fix) +- Create services.yaml for python_script and script ([@arsaboo] - [#23201]) ([python_script docs]) ([script docs]) (beta fix) +- Set encoding before connecting ([@robbiet480] - [#23204]) ([mikrotik docs]) (beta fix) +- Add services.yaml validator ([@balloob] - [#23205]) (beta fix) +- Fix clearing error message for MQTT vacuum ([@emontnemery] - [#23206]) ([mqtt docs]) (beta fix) +- Name sensors correctly ([@mitchellrj] - [#23208]) ([hue docs]) (beta fix) +- Create services.yaml for Tuya ([@arsaboo] - [#23209]) (beta fix) +- create services.yaml for shell_command ([@arsaboo] - [#23210]) (beta fix) +- Add stub services.yaml and make validation mandatory ([@balloob] - [#23213]) (beta fix) +- update zha-quirks ([@dmulcahey] - [#23215]) ([zha docs]) (beta fix) +- fix bindable devices ([@dmulcahey] - [#23216]) ([zha docs]) (beta fix) +- Add missing services.yaml file for hue ([@cgtobi] - [#23217]) (beta fix) +- Ask users for a pin when interacting with locks/garage doors ([@balloob] - [#23223]) ([cloud docs]) ([google_assistant docs]) (breaking change) (beta fix) +- Async fix for bluetooth stopping ([@balloob] - [#23225]) ([bluetooth_le_tracker docs]) (beta fix) +- Return 0 instead of None ([@andrewsayre] - [#23261]) ([plex docs]) (beta fix) +- Update pyheos and log service errors in HEOS integration ([@andrewsayre] - [#23222]) ([heos docs]) (beta fix) +- Fix ESPHome setup errors in beta ([@OttoWinter] - [#23242]) ([esphome docs]) (beta fix) +- Bump zigpy-deconz ([@damarco] - [#23270]) ([zha docs]) (beta fix) +- Bump zigpy and zigpy-xbee ([@damarco] - [#23275]) ([zha docs]) (beta fix) +- Show correct version for stable ([@ludeeus] - [#23291]) ([version docs]) (beta fix) +- Bump skybellpy to 0.4.0 ([@austinmroczek] - [#23294]) ([skybell docs]) (beta fix) +- Create services.yaml for input_datetime ([@VDRainer] - [#23303]) (beta fix) +- Correct calculation and units of light level values. ([@mitchellrj] - [#23309]) ([hue docs]) (beta fix) +- Fix hass.io panel_custom/frontend ([@pvizeli] - [#23313]) ([hassio docs]) (beta fix) +- Dont cache integrations that are not found ([@balloob] - [#23316]) (beta fix) +- Expose door cover/binary_sensor as door type ([@elupus] - [#23307]) ([google_assistant docs]) (beta fix) +- Zestimate - Added check for the existence of data in response ([@dreed47] - [#23310]) ([zestimate docs]) (beta fix) +- Always set latest pin ([@balloob] - [#23328]) ([cloud docs]) (beta fix) +- Add sensor and binary senseor to default expose ([@balloob] - [#23332]) ([google_assistant docs]) (beta fix) +- Support unicode in configuration migration ([@awarecan] - [#23335]) (beta fix) +- Remove ghost folder ([@awarecan] - [#23350]) ([aws_lambda docs]) ([aws_sns docs]) ([aws_sqs docs]) (beta fix) ## {% linkable_title All changes %} @@ -154,7 +198,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Remove all config deprecations invalidated in 0.91 ([@rohankapoorcom] - [#22704]) - Validate manifests in CI ([@balloob] - [#22708]) - Generate codeowners based on manifests ([@balloob] - [#22705]) -- Remove deprecated Insteon components ([@balloob] - [#22710]) ([insteon_local docs]) ([insteon_plm docs]) (breaking change) +- Remove deprecated Insteon components ([@balloob] - [#22710]) (breaking change) - Allow users to set encoding of mikrotik connection ([@robbiet480] - [#22715]) ([mikrotik docs]) - Only post coverage comment if coverage changes ([@MartinHjelmare] - [#22721]) - Add 10 additional language options to DarkSky ([@VirtualL] - [#22719]) ([darksky docs]) @@ -214,7 +258,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) - Fix ZHA Light color conversion. ([@Adminiuga] - [#22909]) ([zha docs]) - Added features to Concord232 Alarm Panel ([@AZDane] - [#22892]) ([concord232 docs]) -- Camera component for BOM integration ([@maddenp] - [#22816]) ([bomradarcam docs]) (new-integration) (new-platform) +- Camera component for BOM integration ([@maddenp] - [#22816]) ([bom docs]) (new-platform) - Add 'Assumed State' property to Somfy MyLink covers ([@bendews] - [#22922]) ([somfy_mylink docs]) - Logi Circle public API refactor and config flow ([@evanjd] - [#20624]) ([logi_circle docs]) (breaking change) - Add amcrest binary_sensors ([@pnbruckner] - [#22703]) ([amcrest docs]) (new-platform) @@ -346,6 +390,48 @@ Experiencing issues introduced by this release? Please report them in our [issue - Support fetching/setting humidity of HomeKit controller thermostats ([@Jc2k] - [#23040]) ([homekit_controller docs]) - Adding Telegram bot leave_chat() service ([@Limych] - [#22259]) ([telegram_bot docs]) - Only create sensors if the station actually has values for them. ([@jvanderneutstulen] - [#20643]) ([luftdaten docs]) +- Kill bluetooth LE scanning gracefully when asked to shut down. ([@mitchellrj] - [#22586]) ([bluetooth_le_tracker docs]) (beta fix) +- Add basic support for native Hue sensors ([@mitchellrj] - [#22598]) ([hue docs]) (beta fix) (new-platform) +- Google assistant skip missing type ([@elupus] - [#23174]) ([google_assistant docs]) (beta fix) +- Fix empty components ([@balloob] - [#23177]) (beta fix) +- Don't warn for missing services ([@balloob] - [#23182]) (beta fix) +- Improve configuration schema for Geniushub integration ([@zxdavb] - [#23155]) ([geniushub docs]) (beta fix) +- Fix niko home control dependency installation ([@NoUseFreak] - [#23176]) ([niko_home_control docs]) (beta fix) +- Hass.io Add-on panel support for Ingress ([@pvizeli] - [#23185]) ([hassio docs]) (beta fix) +- Hue motion senors are motion sensors, not presence sensors. ([@mitchellrj] - [#23193]) ([hue docs]) (beta fix) +- Don't load component when fetching translations ([@balloob] - [#23196]) (beta fix) +- Create empty services.yaml for esphome ([@OttoWinter] - [#23200]) (beta fix) +- Create services.yaml for python_script and script ([@arsaboo] - [#23201]) ([python_script docs]) ([script docs]) (beta fix) +- Set encoding before connecting ([@robbiet480] - [#23204]) ([mikrotik docs]) (beta fix) +- Add services.yaml validator ([@balloob] - [#23205]) (beta fix) +- Fix clearing error message for MQTT vacuum ([@emontnemery] - [#23206]) ([mqtt docs]) (beta fix) +- Name sensors correctly ([@mitchellrj] - [#23208]) ([hue docs]) (beta fix) +- Create services.yaml for Tuya ([@arsaboo] - [#23209]) (beta fix) +- create services.yaml for shell_command ([@arsaboo] - [#23210]) (beta fix) +- Add stub services.yaml and make validation mandatory ([@balloob] - [#23213]) (beta fix) +- update zha-quirks ([@dmulcahey] - [#23215]) ([zha docs]) (beta fix) +- fix bindable devices ([@dmulcahey] - [#23216]) ([zha docs]) (beta fix) +- Add missing services.yaml file for hue ([@cgtobi] - [#23217]) (beta fix) +- Ask users for a pin when interacting with locks/garage doors ([@balloob] - [#23223]) ([cloud docs]) ([google_assistant docs]) (breaking change) (beta fix) +- Async fix for bluetooth stopping ([@balloob] - [#23225]) ([bluetooth_le_tracker docs]) (beta fix) +- Return 0 instead of None ([@andrewsayre] - [#23261]) ([plex docs]) (beta fix) +- Backport missing folder fix from #23191 ([@Jc2k] - [#23297]) ([homekit_controller docs]) +- Update pyheos and log service errors in HEOS integration ([@andrewsayre] - [#23222]) ([heos docs]) (beta fix) +- Fix ESPHome setup errors in beta ([@OttoWinter] - [#23242]) ([esphome docs]) (beta fix) +- Bump zigpy-deconz ([@damarco] - [#23270]) ([zha docs]) (beta fix) +- Bump zigpy and zigpy-xbee ([@damarco] - [#23275]) ([zha docs]) (beta fix) +- Show correct version for stable ([@ludeeus] - [#23291]) ([version docs]) (beta fix) +- Bump skybellpy to 0.4.0 ([@austinmroczek] - [#23294]) ([skybell docs]) (beta fix) +- Create services.yaml for input_datetime ([@VDRainer] - [#23303]) (beta fix) +- Correct calculation and units of light level values. ([@mitchellrj] - [#23309]) ([hue docs]) (beta fix) +- Fix hass.io panel_custom/frontend ([@pvizeli] - [#23313]) ([hassio docs]) (beta fix) +- Dont cache integrations that are not found ([@balloob] - [#23316]) (beta fix) +- Expose door cover/binary_sensor as door type ([@elupus] - [#23307]) ([google_assistant docs]) (beta fix) +- Zestimate - Added check for the existence of data in response ([@dreed47] - [#23310]) ([zestimate docs]) (beta fix) +- Always set latest pin ([@balloob] - [#23328]) ([cloud docs]) (beta fix) +- Add sensor and binary senseor to default expose ([@balloob] - [#23332]) ([google_assistant docs]) (beta fix) +- Support unicode in configuration migration ([@awarecan] - [#23335]) (beta fix) +- Remove ghost folder ([@awarecan] - [#23350]) ([aws_lambda docs]) ([aws_sns docs]) ([aws_sqs docs]) (beta fix) [#19590]: https://github.com/home-assistant/home-assistant/pull/19590 [#20256]: https://github.com/home-assistant/home-assistant/pull/20256 @@ -404,10 +490,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [#22576]: https://github.com/home-assistant/home-assistant/pull/22576 [#22581]: https://github.com/home-assistant/home-assistant/pull/22581 [#22583]: https://github.com/home-assistant/home-assistant/pull/22583 +[#22586]: https://github.com/home-assistant/home-assistant/pull/22586 [#22589]: https://github.com/home-assistant/home-assistant/pull/22589 [#22592]: https://github.com/home-assistant/home-assistant/pull/22592 [#22593]: https://github.com/home-assistant/home-assistant/pull/22593 [#22597]: https://github.com/home-assistant/home-assistant/pull/22597 +[#22598]: https://github.com/home-assistant/home-assistant/pull/22598 [#22600]: https://github.com/home-assistant/home-assistant/pull/22600 [#22606]: https://github.com/home-assistant/home-assistant/pull/22606 [#22609]: https://github.com/home-assistant/home-assistant/pull/22609 @@ -611,10 +699,50 @@ Experiencing issues introduced by this release? Please report them in our [issue [#23149]: https://github.com/home-assistant/home-assistant/pull/23149 [#23151]: https://github.com/home-assistant/home-assistant/pull/23151 [#23152]: https://github.com/home-assistant/home-assistant/pull/23152 +[#23155]: https://github.com/home-assistant/home-assistant/pull/23155 [#23156]: https://github.com/home-assistant/home-assistant/pull/23156 [#23157]: https://github.com/home-assistant/home-assistant/pull/23157 [#23159]: https://github.com/home-assistant/home-assistant/pull/23159 [#23169]: https://github.com/home-assistant/home-assistant/pull/23169 +[#23174]: https://github.com/home-assistant/home-assistant/pull/23174 +[#23176]: https://github.com/home-assistant/home-assistant/pull/23176 +[#23177]: https://github.com/home-assistant/home-assistant/pull/23177 +[#23182]: https://github.com/home-assistant/home-assistant/pull/23182 +[#23185]: https://github.com/home-assistant/home-assistant/pull/23185 +[#23193]: https://github.com/home-assistant/home-assistant/pull/23193 +[#23196]: https://github.com/home-assistant/home-assistant/pull/23196 +[#23200]: https://github.com/home-assistant/home-assistant/pull/23200 +[#23201]: https://github.com/home-assistant/home-assistant/pull/23201 +[#23204]: https://github.com/home-assistant/home-assistant/pull/23204 +[#23205]: https://github.com/home-assistant/home-assistant/pull/23205 +[#23206]: https://github.com/home-assistant/home-assistant/pull/23206 +[#23208]: https://github.com/home-assistant/home-assistant/pull/23208 +[#23209]: https://github.com/home-assistant/home-assistant/pull/23209 +[#23210]: https://github.com/home-assistant/home-assistant/pull/23210 +[#23213]: https://github.com/home-assistant/home-assistant/pull/23213 +[#23215]: https://github.com/home-assistant/home-assistant/pull/23215 +[#23216]: https://github.com/home-assistant/home-assistant/pull/23216 +[#23217]: https://github.com/home-assistant/home-assistant/pull/23217 +[#23222]: https://github.com/home-assistant/home-assistant/pull/23222 +[#23223]: https://github.com/home-assistant/home-assistant/pull/23223 +[#23225]: https://github.com/home-assistant/home-assistant/pull/23225 +[#23242]: https://github.com/home-assistant/home-assistant/pull/23242 +[#23261]: https://github.com/home-assistant/home-assistant/pull/23261 +[#23270]: https://github.com/home-assistant/home-assistant/pull/23270 +[#23275]: https://github.com/home-assistant/home-assistant/pull/23275 +[#23291]: https://github.com/home-assistant/home-assistant/pull/23291 +[#23294]: https://github.com/home-assistant/home-assistant/pull/23294 +[#23297]: https://github.com/home-assistant/home-assistant/pull/23297 +[#23303]: https://github.com/home-assistant/home-assistant/pull/23303 +[#23307]: https://github.com/home-assistant/home-assistant/pull/23307 +[#23309]: https://github.com/home-assistant/home-assistant/pull/23309 +[#23310]: https://github.com/home-assistant/home-assistant/pull/23310 +[#23313]: https://github.com/home-assistant/home-assistant/pull/23313 +[#23316]: https://github.com/home-assistant/home-assistant/pull/23316 +[#23328]: https://github.com/home-assistant/home-assistant/pull/23328 +[#23332]: https://github.com/home-assistant/home-assistant/pull/23332 +[#23335]: https://github.com/home-assistant/home-assistant/pull/23335 +[#23350]: https://github.com/home-assistant/home-assistant/pull/23350 [@AZDane]: https://github.com/AZDane [@ActuallyRuben]: https://github.com/ActuallyRuben [@Adminiuga]: https://github.com/Adminiuga @@ -648,6 +776,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [@amelchio]: https://github.com/amelchio [@andrewsayre]: https://github.com/andrewsayre [@aprosvetova]: https://github.com/aprosvetova +[@arsaboo]: https://github.com/arsaboo +[@austinmroczek]: https://github.com/austinmroczek [@autinerd]: https://github.com/autinerd [@awarecan]: https://github.com/awarecan [@bachya]: https://github.com/bachya @@ -660,8 +790,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [@cgtobi]: https://github.com/cgtobi [@choss]: https://github.com/choss [@cmsimike]: https://github.com/cmsimike +[@damarco]: https://github.com/damarco [@dgomes]: https://github.com/dgomes [@dmulcahey]: https://github.com/dmulcahey +[@dreed47]: https://github.com/dreed47 [@easink]: https://github.com/easink [@ehendrix23]: https://github.com/ehendrix23 [@elupus]: https://github.com/elupus @@ -680,9 +812,11 @@ Experiencing issues introduced by this release? Please report them in our [issue [@kellerza]: https://github.com/kellerza [@kstaniek]: https://github.com/kstaniek [@loe]: https://github.com/loe +[@ludeeus]: https://github.com/ludeeus [@maddenp]: https://github.com/maddenp [@markusressel]: https://github.com/markusressel [@mgiako]: https://github.com/mgiako +[@mitchellrj]: https://github.com/mitchellrj [@molobrakos]: https://github.com/molobrakos [@mwegrzynek]: https://github.com/mwegrzynek [@mzdrale]: https://github.com/mzdrale @@ -727,7 +861,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [axis docs]: /components/axis/ [binary_sensor docs]: /components/binary_sensor/ [bloomsky docs]: /components/bloomsky/ -[bomradarcam docs]: /components/bomradarcam/ +[bluetooth_le_tracker docs]: /components/bluetooth_le_tracker/ +[bom docs]: /components/bom/ [broadlink docs]: /components/broadlink/ [caldav docs]: /components/caldav/ [camera docs]: /components/camera/ @@ -771,6 +906,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [gtfs docs]: /components/gtfs/ [hangouts docs]: /components/hangouts/ [harmony docs]: /components/harmony/ +[hassio docs]: /components/hassio/ [heos docs]: /components/heos/ [hikvisioncam docs]: /components/hikvisioncam/ [homekit docs]: /components/homekit/ @@ -779,6 +915,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [homematicip_cloud docs]: /components/homematicip_cloud/ [honeywell docs]: /components/honeywell/ [html5 docs]: /components/html5/ +[hue docs]: /components/hue/ [ifttt docs]: /components/ifttt/ [ign_sismologia docs]: /components/ign_sismologia/ [influxdb docs]: /components/influxdb/ @@ -813,15 +950,19 @@ Experiencing issues introduced by this release? Please report them in our [issue [osramlightify docs]: /components/osramlightify/ [owntracks docs]: /components/owntracks/ [person docs]: /components/person/ +[plex docs]: /components/plex/ +[python_script docs]: /components/python_script/ [qwikswitch docs]: /components/qwikswitch/ [raincloud docs]: /components/raincloud/ [rainmachine docs]: /components/rainmachine/ [rflink docs]: /components/rflink/ [ring docs]: /components/ring/ [satel_integra docs]: /components/satel_integra/ +[script docs]: /components/script/ [sensor docs]: /components/sensor/ [seventeentrack docs]: /components/seventeentrack/ [simplisafe docs]: /components/simplisafe/ +[skybell docs]: /components/skybell/ [somfy_mylink docs]: /components/somfy_mylink/ [sonos docs]: /components/sonos/ [stiebel_eltron docs]: /components/stiebel_eltron/ @@ -842,5 +983,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [xiaomi_miio docs]: /components/xiaomi_miio/ [yeelight docs]: /components/yeelight/ [zengge docs]: /components/zengge/ +[zestimate docs]: /components/zestimate/ [zha docs]: /components/zha/ [zwave docs]: /components/zwave/ From 457206750fbfc6fc267ca7aa67b42a3c0c5a6591 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 24 Apr 2019 11:56:59 -0700 Subject: [PATCH 44/50] Set secure devices pin --- source/_components/google_assistant.markdown | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index e9cc0c10d40..95f8605361d 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -53,7 +53,7 @@ Since release 0.80, the `Authorization Code` type of `OAuth` account linking is

If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. - + If you're still having trouble, make sure that you're not connected to the same network Home Assistant is running on, e.g., use 4G/LTE instead.

@@ -129,11 +129,11 @@ project_id: description: Project ID from the Actions on Google console (looks like `words-2ab12`) required: true type: string -allow_unlock: - description: "When True, allows Google Assistant to unlock locks." +secure_devices_pin: + description: "Pin code to say when you want to interact with a secure device." required: false - type: boolean - default: false + type: string + default: "" api_key: description: Your Homegraph API key (for the `google_assistant.request_sync` service) required: false @@ -199,8 +199,8 @@ Currently, the following domains are available to be used with Google Assistant, ### {% linkable_title Media Player Sources %} -Media Player sources are sent via the Modes trait in Google Assistant. -There is currently a limitation with this feature that requires a hard-coded set of settings. Because of this, the only sources that will be usable by this feature are listed here: +Media Player sources are sent via the Modes trait in Google Assistant. +There is currently a limitation with this feature that requires a hard-coded set of settings. Because of this, the only sources that will be usable by this feature are listed here: https://developers.google.com/actions/reference/smarthome/traits/modes #### Example Command: @@ -213,7 +213,7 @@ Entities that have not got rooms explicitly set and that have been placed in Hom ### {% linkable_title Climate Operation Modes %} -There is not an exact 1-1 match between Home Assistant and Google Assistant for the available operation modes. +There is not an exact 1-1 match between Home Assistant and Google Assistant for the available operation modes. Here are the modes that are currently available: - off From 2ba146e66ca65b21d132fa3da06f7adc3bce6fb5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 24 Apr 2019 11:58:49 -0700 Subject: [PATCH 45/50] Update breaking change --- source/_posts/2019-04-24-release-92.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index 5c2dcafc1fc..27c0f3b11b9 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -56,6 +56,8 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} +- __Google Assistant__ - You will now have to say a pin code before being able to control locks, doors and garage doors. You can set this pin in configuration -> cloud or, for manual installs, add `secure_devices_pin` to your config. ([@balloob] - [#23223]) ([cloud docs]) ([google_assistant docs]) (breaking change) (beta fix) +- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will result in improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) - __Lightwave__ - Lightwave configuration was not properly validated before but it is now. This can cause invalid configurations to finally be flagged as such. ([@amelchio] - [#22576]) ([lightwave docs]) - __Amcrest__ - Remove Build Date, Version and Serial Number attributes from sensors. These values do not change during the life of the device and are not appropriate for state attributes. ([@pnbruckner] - [#22418]) ([amcrest docs]) - __Insteon__ - Placeholders that forwarded users from insteon_plm and insteon_local to insteon component have been removed. ([@balloob] - [#22710]) @@ -67,14 +69,12 @@ Experiencing issues introduced by this release? Please report them in our [issue Please check the documentation for further details. ([@evanjd] - [#20624]) ([logi_circle docs]) - __Introduction__ - The introduction integration has been removed. It used to be part of the initially created configuration but no longer served a purpose. ([@balloob] - [#22944]) ([introduction docs]) - __media_player__ - The `media_player` component will now guard against calling services that are not supported by the entity. This means that if you attempt to invoke `media_player.turn_on`, but the entity does not indicate it can be turned on through `supported_features`, the service will not be called and will not log any message. This is a breaking change as in the past it would have called the `turn_on` implementation. There may be platforms that do not properly set `supported_features` which may result in service calls not being invoked where they would have previously.([@andrewsayre] - [#22878]) ([media_player docs]) -- __Google Assistant__ - Migrate light setting trait to use HSV color spectrum. If you have lights with colors, please run a Google Assistant SYNC after you update to this version. It will result in improved color representation. ([@balloob] - [#22980]) ([google_assistant docs]) - __Load requirements and dependencies from manifests__ - Developers - Setup entity platform will set up its component now despite DEPENDENCIES. ([@rohankapoorcom] - [#22717]) - __Satel Integra__ - The component now supports multiple partitions and this required a configuration change. Instead of a single parameters partition and `single_home_mode` there are now section partitions. Please see the documentation for further details. ([@c-soft] - [#21992]) ([satel_integra docs]) (new-platform) - __MQTT__ - MQTT discovery will not longer implicitly set `state_topic` except for `mqtt.alarm_control_panel`, `mqtt.binary_sensor` and `mqtt.sensor`. ([@emontnemery] - [#22998]) ([mqtt docs]) - __Android TV__ - This will change the `unique_id` used to identify Android TV devices. As a result, users may find that the entity ID's of their `androidtv` media players have changed. This can be resolved by going to Configuration > Entity Registry and deleting those entries, then restarting HA. (Note: Fire TV devices are not affected.)([@JeffLIrion] - [#22996]) ([androidtv docs]) - __Google TTS__ - The `google tts` platform has changed to `google_translate`. Default configs will be migrated to the new platform during 0.92 startup. A manual update will be required if the user has changed default tts or is loading the tts configuration from another location. ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (new-integration) - __Fibaro__ - There was a potential unique ID collision which caused problems for some users, as scenes and devices were enumerated separately, so the same ID could be assigned if they were unnamed. The unique ID generation has been changed to avoid this, which is a breaking change with regard to scenes. ([@pbalogh77] - [#22987]) ([fibaro docs]) -- Ask users for a pin when interacting with locks/garage doors ([@balloob] - [#23223]) ([cloud docs]) ([google_assistant docs]) (breaking change) (beta fix) ## {% linkable_title Beta Fixes %} From 40f85a41fa7c98ebdcd327e7b460042cbc76cc44 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Wed, 24 Apr 2019 21:33:49 +0200 Subject: [PATCH 46/50] :pencil2: Add zha hub category (#9288) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✏️ Add zha hub category --- source/_components/zha.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/zha.markdown b/source/_components/zha.markdown index 48cd48cfe9c..79df7194824 100644 --- a/source/_components/zha.markdown +++ b/source/_components/zha.markdown @@ -9,6 +9,7 @@ sharing: true footer: true logo: zigbee.png ha_category: + - Hub - Binary Sensor - Fan - Light From 076cffd8deff6d78f68ae371ecdeac862ba8bb95 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 24 Apr 2019 14:37:06 -0700 Subject: [PATCH 47/50] Update geniushub.markdown --- source/_components/geniushub.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_components/geniushub.markdown b/source/_components/geniushub.markdown index 67fd4b2decf..7e9202bb363 100644 --- a/source/_components/geniushub.markdown +++ b/source/_components/geniushub.markdown @@ -16,9 +16,7 @@ ha_iot_class: Local Polling The `geniushub` integration links Home Assistant with your Genius Hub for controlling climate devices (the hub does not have to be in the same network as HA). -Each Zone controlled by your Genius hub will report back the state, mode, setpoint and temperature. Other properties are available via the device's `state_attributes`. - -It uses this PyPi client library: [https://pypi.org/project/geniushub-client/](https://pypi.org/project/geniushub-client/) +Each Zone controlled by your Genius hub will report back the state, mode, setpoint and temperature. Other properties are available via the device's attributes. There are two distinct options for accessing a Genius Hub: From d9d4ea04666135c996a70b0b523b2424073094c1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 24 Apr 2019 14:42:44 -0700 Subject: [PATCH 48/50] Add notes --- source/_posts/2019-04-24-release-92.markdown | 31 +++++++++++------- .../blog/2019-04-release-92/components.png | Bin 0 -> 32058 bytes 2 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 source/images/blog/2019-04-release-92/components.png diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index 27c0f3b11b9..d791b5ae2da 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -1,8 +1,8 @@ --- layout: post -title: "0.92: TBD" -description: "TBD" -date: 2019-04-17 00:11:03 +title: "0.92: HEOS, Somfy MyLink, Genius Hub" +description: "Get your whole home audio " +date: 2019-04-24 00:11:03 date_formatted: "April 24, 2019" author: Paulus Schoutsen author_twitter: balloob @@ -11,16 +11,28 @@ categories: Release-Notes og_image: /images/blog/2019-04-release-92/components.png --- -- All custom components will need an `__init__.py` file, this can be empty. For custom component developers, see the blog post [Introducing integrations](https://developers.home-assistant.io/blog/2019/04/12/new-integration-structure.html) -- Lovelace can stream cameras (pending docs). Add `camera_view: live` to picture glance, picture entity, picture elements. Warn, can use a lot of data. We are exploring being able to add a mode to only show it on desktop. -- If you are still receiving a message that your configuration contains extra keys, this is the last release that this will be a warning. In the next release this will be an error and the integration won't set up. + + +It's time for the 0.92 release. We took a week extra for this release, because we have been very busy in changing how we load everything under the hood. Our new standard for integrations will help us in the future to streamline development, release notes, documentation and updates. If you want to know what we're up to, or if you maintain custom components, check out our developer blog: [Introducing integrations](https://developers.home-assistant.io/blog/2019/04/12/new-integration-structure.html). + +## {% linkable_title Lovelace streams cameras! %} + +This release continues to improve on our new camera streaming feature released with Home Assistant 0.90. This release adds support to Lovelace to show camera streams as part of your cards. Support has been aded to picture glance, picture entity and picture element cards. Just add `camera_view: live` to the configuration. Be careful showing live streams on mobile, camera streams can use a lot of data. We are exploring being able to add a mode to only show the streams on desktop. + +## {% linkable_title HEOS integration %} + +The HEOS integration adds support for HEOS capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. The features include controlling players, viewing playing media info, selecting the source from physical inputs and HEOS favorites, and more. We have established a relationship with the lead architect for the HEOS API and look forward to adding more features through this collaboration. Thanks to [@easink] for the initial contribution. + +Finally, if you are still receiving a message that your configuration contains extra keys, this is the last release that this will be a warning. In the next release this will treated as invalid config for that integration. ## {% linkable_title New Integrations %} +- Add HEOS media player component ([@easink], [@andrewsayre] - [#21721], [#23222], [#22517], [#22554], [#22592], [#22652], [#22903], [#22913], [#23063], [#23222]) - Add N26 component ([@markusressel] - [#22684]) ([n26 docs]) (new-integration) (new-platform) - Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) - Instituto Geográfico Nacional Sismología (Earthquakes) Feed platform ([@exxamalte] - [#22696]) ([ign_sismologia docs]) (new-integration) (new-platform) -- Rename google/tts.py to google_translate/tts.py ([@awarecan] - [#23090]) ([google docs]) ([google_translate docs]) ([tts docs]) (breaking change) (new-integration) +- Genius hub ([@GeoffAtHome] - [#21598]) ([geniushub docs]) (new-platform) +- Add support for Stiebel Eltron heat pumps ([@fucm] - [#21199]) ([stiebel_eltron docs]) (new-platform) ## {% linkable_title New Platforms %} @@ -30,17 +42,12 @@ og_image: /images/blog/2019-04-release-92/components.png - Add N26 component ([@markusressel] - [#22684]) ([n26 docs]) (new-integration) (new-platform) - Add OASA Telematics greek public transport sensor component ([@panosmz] - [#22196]) ([oasa_telematics docs]) (new-platform) - Initial Fibaro HC Climate support ([@pbalogh77] - [#20256]) ([fibaro docs]) (new-platform) -- Add Somfy MyLink support for Covers ([@bendews] - [#22514]) ([somfy_mylink docs]) (new-integration) (new-platform) - Camera component for BOM integration ([@maddenp] - [#22816]) ([bom docs]) (new-platform) - Add amcrest binary_sensors ([@pnbruckner] - [#22703]) ([amcrest docs]) (new-platform) - Binary sensors for netgear_lte ([@amelchio] - [#22902]) ([netgear_lte docs]) (new-platform) - Add ESPHome climate support ([@OttoWinter] - [#22859]) ([esphome docs]) (new-platform) -- Instituto Geográfico Nacional Sismología (Earthquakes) Feed platform ([@exxamalte] - [#22696]) ([ign_sismologia docs]) (new-integration) (new-platform) - Add Satel_integra switchable outputs and multiple partitions ([@c-soft] - [#21992]) ([satel_integra docs]) (breaking change) (new-platform) -- Add support for Stiebel Eltron heat pumps ([@fucm] - [#21199]) ([stiebel_eltron docs]) (new-platform) - Add basic Supla cover support ([@mwegrzynek] - [#22133]) ([supla docs]) (new-platform) -- Simplify esphome ([@OttoWinter] - [#22868]) ([esphome docs]) (new-platform) -- Genius hub ([@GeoffAtHome] - [#21598]) ([geniushub docs]) (new-platform) - Added epson workforce component ([@ThaStealth] - [#23144]) ([epsonworkforce docs]) (new-platform) - Add basic support for native Hue sensors ([@mitchellrj] - [#22598]) ([hue docs]) (beta fix) (new-platform) diff --git a/source/images/blog/2019-04-release-92/components.png b/source/images/blog/2019-04-release-92/components.png new file mode 100644 index 0000000000000000000000000000000000000000..30fb3ad31c798dec562ee856db5f7d66bcc50d22 GIT binary patch literal 32058 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 literal 0 HcmV?d00001 From f52a0f09a155c55c874d1dfdb5bf12da7f039906 Mon Sep 17 00:00:00 2001 From: Jason Hunter Date: Wed, 24 Apr 2019 17:46:40 -0400 Subject: [PATCH 49/50] Add documentation for camera_view (#9290) * add documentation for camera_view * Update picture-elements.markdown * Update picture-entity.markdown * Update picture-glance.markdown * Update picture-elements.markdown * Update picture-entity.markdown * Update picture-glance.markdown --- source/_lovelace/picture-elements.markdown | 5 +++++ source/_lovelace/picture-entity.markdown | 5 +++++ source/_lovelace/picture-glance.markdown | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown index 38aac6b58e9..097c077b921 100644 --- a/source/_lovelace/picture-elements.markdown +++ b/source/_lovelace/picture-elements.markdown @@ -373,6 +373,11 @@ camera_image: required: false description: A camera entity. type: string +camera_view: + required: false + description: '"live" will show the live view if `stream` is enabled.' + default: auto + type: string state_image: required: false description: '[State-based images](#how-to-use-state_image)' diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown index 1a6f84fbf6d..792ea1ab73f 100644 --- a/source/_lovelace/picture-entity.markdown +++ b/source/_lovelace/picture-entity.markdown @@ -30,6 +30,11 @@ camera_image: required: false description: "Camera `entity_id` to use. (not required if `entity` is already a camera-entity)." type: string +camera_view: + required: false + description: '"live" will show the live view if `stream` is enabled.' + default: auto + type: string image: required: false description: URL of an image. diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown index 4acef6811dc..cdd9c8e2c81 100644 --- a/source/_lovelace/picture-glance.markdown +++ b/source/_lovelace/picture-glance.markdown @@ -38,6 +38,11 @@ camera_image: required: false description: Camera entity as Background image. type: string +camera_view: + required: false + description: '"live" will show the live view if `stream` is enabled.' + default: auto + type: string state_image: required: false description: Background image based on entity state. From 25407f8bc192af550067ed13deb0a6e6e4c12a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20W=C4=99grzynek?= Date: Wed, 24 Apr 2019 20:38:57 +0200 Subject: [PATCH 50/50] Supla component docs (#8971) * Supla component docs * Update supla.markdown --- source/_components/supla.markdown | 53 +++++++++++++++++++++++ source/images/supported_brands/supla.png | Bin 0 -> 5876 bytes 2 files changed, 53 insertions(+) create mode 100644 source/_components/supla.markdown create mode 100644 source/images/supported_brands/supla.png diff --git a/source/_components/supla.markdown b/source/_components/supla.markdown new file mode 100644 index 00000000000..d96d02298c9 --- /dev/null +++ b/source/_components/supla.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "Supla" +description: "Instructions for integration with Supla Cloud's Web API" +date: 2019-03-14 20:05 +sidebar: true +comments: true +sharing: true +footer: true +logo: supla.png +ha_release: 0.92 +ha_category: + - Hub + - Cover +ha_iot_class: Cloud Polling +redirect_from: + - /components/cover.supla/ +--- + +The [Supla](http://supla.org) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, it's own firmware and commercially available devices (produced for example by [Zamel](https://supla.zamel.pl/)) + +Currently only covers (shutters in Supla's lingo) are supported, but, thanks to comprehensive and universal REST API, it's pretty easy to add more. + +Right now it's impossible to add single devices -- all of them are discovered from +Supla Cloud's servers. + +## {% linkable_title Configuration %} + +To use Supla devices in your installation, add the following to your `configuration.yaml`: + +```yaml +supla: + servers: + - server: svr1.supla.org + access_token: your_really_long_access_token +``` + +{% configuration %} +servers: + description: List of server configurations. + requires: true + type: list +server: + description: Address of your Supla Cloud server (either IP or DNS name) + required: true + type: string +access_token: + description: + An access token for REST API configuration. Can be acquired from + http[s]://your.server.org/integrations/tokens (please add at least Channel's Read and Action Execution permissions). + required: true + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/supla.png b/source/images/supported_brands/supla.png new file mode 100644 index 0000000000000000000000000000000000000000..ee690c28729386a8d399174a44a5bc9a1bf75bd3 GIT binary patch literal 5876 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 KMNUMnLSTY&kounh literal 0 HcmV?d00001