From cc78dcfcb96d0835b415110d9feca5faf19f2da7 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 3 Oct 2019 16:30:59 +0200 Subject: [PATCH 01/45] Initial draft release notes 0.100 --- _config.yml | 6 +- source/_posts/2019-10-09-release-100.markdown | 700 ++++++++++++++++++ 2 files changed, 703 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2019-10-09-release-100.markdown diff --git a/_config.yml b/_config.yml index 1fcd8b3c3e8..d9c16deede8 100644 --- a/_config.yml +++ b/_config.yml @@ -100,9 +100,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 99 -current_patch_version: 3 -date_released: 2019-09-25 +current_minor_version: 100 +current_patch_version: 0 +date_released: 2019-10-09 # 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-10-09-release-100.markdown b/source/_posts/2019-10-09-release-100.markdown new file mode 100644 index 00000000000..f05e2ef12e9 --- /dev/null +++ b/source/_posts/2019-10-09-release-100.markdown @@ -0,0 +1,700 @@ +--- +layout: post +title: "0.100: TBD" +description: "TBD" +date: 2019-10-03 14:05:02 +date_formatted: "October 9, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-09-0.100/components.png +--- + + + +TBD + +## In other news + +TBD + +## New Integrations + +- Add support for DOODS Image Processing ([@snowzach] - [#26208]) ([doods docs]) (new-integration) +- Izone component ([@Swamp-Ig] - [#24550]) ([izone docs]) (new-integration) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([moscow_yandex_transport docs]) (new-integration) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26766]) ([yandex_transport docs]) (new-integration) +- Add Kaiterra integration ([@Michsior14] - [#26661]) ([kaiterra docs]) (new-integration) +- Add Ombi integration ([@larssont] - [#26755]) ([ombi docs]) (new-integration) +- Add here_travel_time ([@eifinger] - [#24603]) ([here_travel_time docs]) (new-integration) +- Add support for SOMA Smartshades devices ([@ratsept] - [#26226]) ([soma docs]) (new-integration) +- Add saj component ([@fredericvl] - [#26902]) ([saj docs]) (new-integration) + +## New Platforms + +- Add iaqualink binary sensor and unique_id ([@flz] - [#26616]) ([iaqualink docs]) (new-platform) +- Add basic support for IKEA Fyrtur blinds ([@ggravlingen] - [#26659]) ([tradfri docs]) (new-platform) +- Centralize rainbird config and add binary sensor platform ([@konikvranik] - [#26393]) ([rainbird docs]) (breaking change) (new-platform) + +## Breaking Changes + +- Refactor nzbget to support future platform changes ([@chriscla] - [#26462]) ([nzbget docs]) (breaking change) +- Fix spaceapi ([@Bouni] - [#26453]) ([spaceapi docs]) (breaking change) +- Remove deprecated ups integration (ADR-0004) ([@frenck] - [#26824]) ([ups docs]) (breaking change) +- Remove deprecated usps integration (ADR-0004) ([@frenck] - [#26823]) ([usps docs]) (breaking change) +- Remove deprecated sytadin integration (ADR-0004) ([@frenck] - [#26819]) ([sytadin docs]) (breaking change) +- Remove deprecated srp_energy integration (ADR-0004) ([@frenck] - [#26826]) ([srp_energy docs]) (breaking change) +- Remove deprecated fedex integration (ADR-0004) ([@frenck] - [#26822]) ([fedex docs]) (breaking change) +- Remove deprecated linksys_ap integration (ADR-0004) ([@frenck] - [#26847]) ([linksys_ap docs]) (breaking change) +- Group Linky sensors to Linky meter device ([@piitaya] - [#26738]) ([linky docs]) (breaking change) +- Move elv integration to component and bump pypca ([@majuss] - [#26552]) ([elv docs]) (breaking change) +- Reorg device automation ([@balloob] - [#26880]) ([automation docs]) ([binary_sensor docs]) ([deconz docs]) ([device_automation docs]) ([light docs]) ([switch docs]) ([zha docs]) (breaking change) +- Add config flow to ecobee ([@marthoc] - [#26634]) ([ecobee docs]) (breaking change) +- Add config flow to transmission ([@engrbm87] - [#26434]) ([transmission docs]) (breaking change) +- Centralize rainbird config and add binary sensor platform ([@konikvranik] - [#26393]) ([rainbird docs]) (breaking change) (new-platform) +- Fix incomfort and Bump client to 0.3.5 ([@zxdavb] - [#26802]) ([incomfort docs]) (breaking change) +- Bugfix evohome ([@zxdavb] - [#26810]) ([evohome docs]) (breaking change) +- Update opentherm_gw.climate to match Climate 1.0 ([@mvn23] - [#25931]) ([opentherm_gw docs]) (breaking change) +- Tweak geniushub and bump client to v0.6.26 ([@zxdavb] - [#26640]) ([geniushub docs]) (breaking change) + +## All changes + +- Add support for DOODS Image Processing ([@snowzach] - [#26208]) ([doods docs]) (new-integration) +- Bump zigate to 0.3.0 ([@doudz] - [#26586]) ([zha docs]) +- Upgrade youtube_dl to 2019.09.12.1 ([@BKPepe] - [#26593]) ([media_extractor docs]) +- Improve bluetooth tracker device code ([@pgilad] - [#26067]) ([bluetooth_tracker docs]) +- Disable Watson TTS Telemetry ([@poofyteddy] - [#26253]) ([watson_tts docs]) +- Fix Typo ([@SNoof85] - [#26612]) ([cert_expiry docs]) +- Refactor Bluetooth Tracker to async ([@pgilad] - [#26614]) ([bluetooth_tracker docs]) +- deCONZ - create deconz_events through sensor platform ([@Kane610] - [#26592]) ([deconz docs]) +- zha ZCL color loop effect ([@amigan] - [#26549]) ([zha docs]) +- Add iaqualink binary sensor and unique_id ([@flz] - [#26616]) ([iaqualink docs]) (new-platform) +- Add group attribute to Homematic IP Cloud ([@SukramJ] - [#26618]) ([homematicip_cloud docs]) +- Move deCONZ services to their own file ([@Kane610] - [#26645]) ([deconz docs]) +- Add built in weather to Homematic IP Cloud ([@SukramJ] - [#26642]) ([homematicip_cloud docs]) +- deCONZ - battery sensor instead of battery attribute ([@Kane610] - [#26591]) ([deconz docs]) +- deCONZ - Remove mechanisms to import a configuration from configuration.yaml ([@Kane610] - [#26648]) ([deconz docs]) +- Refactor nzbget to support future platform changes ([@chriscla] - [#26462]) ([nzbget docs]) (breaking change) +- Fix Environment Canada weather forecast, retain icon_code sensor ([@michaeldavie] - [#26646]) ([environment_canada docs]) +- Emulate color temperature for non-ct lights in light groups ([@bryanyork] - [#23495]) ([google_assistant docs]) ([group docs]) +- Use pynzbgetapi exceptions consistently ([@chriscla] - [#26667]) ([nzbget docs]) +- deCONZ - Improve service tests ([@Kane610] - [#26663]) ([deconz docs]) +- zha: fix 0 second transitions being ignored. ([@abmantis] - [#26654]) ([zha docs]) +- pytfiac version bump to 0.4 ([@fredrike] - [#26669]) ([tfiac docs]) +- Switch py_nextbus to py_nextbusnext ([@ViViDboarder] - [#26681]) ([nextbus docs]) +- Disconnect velux on hass stop ([@gibman] - [#26266]) ([velux docs]) +- Improve Envoy detection and support multiple Envoys ([@jesserizzo] - [#26665]) ([enphase_envoy docs]) +- Fix volumio set shuffle ([@zewelor] - [#26660]) ([volumio docs]) +- Fix mysensors validation for composite entities ([@MartinHjelmare] - [#26666]) ([mysensors docs]) +- Add support for automation description ([@emontnemery] - [#26662]) ([automation docs]) ([config docs]) +- Add alternative name for Tibber sensors ([@Danielhiversen] - [#26685]) ([tibber docs]) +- deCONZ improve light tests ([@Kane610] - [#26697]) ([deconz docs]) +- Hide "PTZ is not available on this camera" warning ([@definitio] - [#26649]) ([onvif docs]) +- deCONZ rewrite sensor tests ([@Kane610] - [#26679]) ([deconz docs]) +- Fix torque degree char ([@roblandry] - [#26183]) ([torque docs]) +- Change datetime.now() to dt_util.now() ([@tsvi] - [#26582]) +- Add additional needles to glances cpu_temp attribute ([@shutupflanders] - [#22311]) ([glances docs]) +- Move alexa integration to use dt_util ([@tsvi] - [#26723]) ([alexa docs]) +- Bumps pytest to 5.1.2 ([@frenck] - [#26718]) +- Bumps aiohttp to 3.6.0 ([@frenck] - [#26728]) +- Bumps pre-commit to 1.18.3 ([@frenck] - [#26717]) +- Update Solax Library to 0.2.2 ([@squishykid] - [#26705]) ([solax docs]) +- Bump aiohttp to 3.6.1 ([@frenck] - [#26739]) +- Add Plex config flow support ([@jjlawren] - [#26548]) ([plex docs]) +- Bump restrictedpython to 5.0 ([@frenck] - [#26741]) +- Izone component ([@Swamp-Ig] - [#24550]) ([izone docs]) (new-integration) +- Bump influxdb to 5.2.3 ([@frenck] - [#26743]) ([influxdb docs]) +- Update codeowners ([@amelchio] - [#26733]) ([lifx docs]) ([lifx_cloud docs]) ([lifx_legacy docs]) ([netgear_lte docs]) ([sonos docs]) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([moscow_yandex_transport docs]) (new-integration) +- deCONZ improve gateway tests ([@Kane610] - [#26709]) ([deconz docs]) +- Revert "Add transport data from maps.yandex.ru api (#26252)" ([@pvizeli] - [#26762]) ([yandex_transport docs]) +- Bump openwrt-luci-rpc to version 1.1.1 ([@flowolf] - [#26759]) ([luci docs]) +- Type hint additions ([@scop] - [#26765]) ([automation docs]) ([cover docs]) ([frontend docs]) ([http docs]) ([media_player docs]) ([switch docs]) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26766]) ([yandex_transport docs]) (new-integration) +- ZHA siren and warning device support ([@dmulcahey] - [#26046]) ([zha docs]) +- Bump aiowwlln to 2.0.2 ([@bachya] - [#26769]) ([wwlln docs]) +- Bump simplisafe-python to 5.0.1 ([@bachya] - [#26775]) ([simplisafe docs]) +- Add integration scaffolding script ([@balloob] - [#26777]) +- Bump HAP-python to 2.6.0 for homekit ([@Jc2k] - [#26783]) ([homekit docs]) +- Bump pynws version to 0.8.1 ([@MatthewFlamm] - [#26770]) ([nws docs]) +- Add optimizer data to solaredge_local ([@scheric] - [#26708]) ([solaredge_local docs]) +- Mqtt binary sensor expire after ([@KiLLeRRaT] - [#26058]) ([mqtt docs]) +- Upgrade importlib-metadata to 0.23 ([@fabaff] - [#26787]) +- Upgrade python-whois to 0.7.2 ([@fabaff] - [#26788]) ([whois docs]) +- Fix doods missing detector name kwarg ([@snowzach] - [#26784]) ([doods docs]) +- Add myself as a pi_hole codeowner ([@johnluetke] - [#26796]) ([pi_hole docs]) +- Fix spaceapi ([@Bouni] - [#26453]) ([spaceapi docs]) (breaking change) +- Update light.py ([@CQoute] - [#26703]) ([esphome docs]) +- Bump hbmqtt to 0.9.5 ([@frenck] - [#26804]) ([mqtt docs]) +- Bump python-slugify to 3.0.4 ([@frenck] - [#26801]) +- Bump pytest to 5.1.3 ([@frenck] - [#26794]) +- Bump iperf3 to 0.1.11 ([@frenck] - [#26795]) ([iperf3 docs]) +- Bump shodan to 1.17.0 ([@frenck] - [#26797]) ([shodan docs]) +- Bump request_mock to 1.7.0 ([@frenck] - [#26799]) +- Bump pylutron to 0.2.5 ([@thecynic] - [#26815]) +- Upgrade sendgrid to 6.1.0 ([@fabaff] - [#26809]) ([sendgrid docs]) +- Exempt 'Help wanted' issue from stale bot ([@frenck] - [#26829]) +- Add device automation support to binary_sensor entities ([@emontnemery] - [#26643]) ([binary_sensor docs]) +- Update Vivotek camera component ([@HarlemSquirrel] - [#26754]) ([vivotek docs]) +- Add basic support for IKEA Fyrtur blinds ([@ggravlingen] - [#26659]) ([tradfri docs]) (new-platform) +- Unload Plex config entries ([@jjlawren] - [#26771]) ([plex docs]) +- Add Kaiterra integration ([@Michsior14] - [#26661]) ([kaiterra docs]) (new-integration) +- Add manual step to Plex config flow ([@jjlawren] - [#26773]) ([plex docs]) +- Add Ombi integration ([@larssont] - [#26755]) ([ombi docs]) (new-integration) +- Prevent Wemo doing I/O in event loop ([@balloob] - [#26835]) ([wemo docs]) +- Split scaffolding script ([@balloob] - [#26832]) +- Remove deprecated ups integration (ADR-0004) ([@frenck] - [#26824]) ([ups docs]) (breaking change) +- Remove deprecated usps integration (ADR-0004) ([@frenck] - [#26823]) ([usps docs]) (breaking change) +- Remove deprecated sytadin integration (ADR-0004) ([@frenck] - [#26819]) ([sytadin docs]) (breaking change) +- Add here_travel_time ([@eifinger] - [#24603]) ([here_travel_time docs]) (new-integration) +- Remove deprecated srp_energy integration (ADR-0004) ([@frenck] - [#26826]) ([srp_energy docs]) (breaking change) +- Remove deprecated fedex integration (ADR-0004) ([@frenck] - [#26822]) ([fedex docs]) (breaking change) +- Store ZHA light brightness when fading off to turn on at the correct brightness ([@abmantis] - [#26680]) ([zha docs]) +- Bump pyotp to 2.3.0 ([@frenck] - [#26849]) ([otp docs]) +- Remove deprecated linksys_ap integration (ADR-0004) ([@frenck] - [#26847]) ([linksys_ap docs]) (breaking change) +- Bump up ZHA dependencies ([@Adminiuga] - [#26746]) +- fix onvif/camera setting up error ([@sanyatuning] - [#26825]) ([onvif docs]) +- Bump homematicip_cloud to 0.10.11 ([@SukramJ] - [#26852]) ([homematicip_cloud docs]) +- Group Linky sensors to Linky meter device ([@piitaya] - [#26738]) ([linky docs]) (breaking change) +- Add unit to 'charging_level_hv' bwm_connected_drive sensor ([@timmccor] - [#26861]) ([bmw_connected_drive docs]) +- Add reproduce state template ([@balloob] - [#26866]) +- Put draw_box in image_processing ([@robmarkcole] - [#26712]) ([doods docs]) ([image_processing docs]) ([tensorflow docs]) +- Move elv integration to component and bump pypca ([@majuss] - [#26552]) ([elv docs]) (breaking change) +- Add availability_template to Template Sensor platform ([@grillp] - [#26516]) ([template docs]) +- Add device automation support to ZHA ([@dmulcahey] - [#26821]) ([zha docs]) +- Removes unnecessary else/elif blocks ([@frenck] - [#26884]) +- Add and corrects typehints in Entity helper & core class ([@frenck] - [#26805]) +- Add comment for clarity to helper.entity.enabled() ([@frenck] - [#26793]) +- Reorg device automation ([@balloob] - [#26880]) ([automation docs]) ([binary_sensor docs]) ([deconz docs]) ([device_automation docs]) ([light docs]) ([switch docs]) ([zha docs]) (breaking change) +- Use Python3 new super syntax sugar ([@frenck] - [#26890]) +- bump quirks ([@dmulcahey] - [#26885]) ([zha docs]) +- Update zigpy_zigate to 0.4.0 ([@doudz] - [#26883]) ([zha docs]) +- Inverting states for opening/closing Homekit covers ([@tleegaard] - [#26872]) ([homekit_controller docs]) +- Removes unnecessary utf8 source encoding declarations ([@frenck] - [#26887]) ([lcn docs]) ([yandex_transport docs]) +- Removes unnecessary print_function future import ([@frenck] - [#26888]) +- Add availability_template to Template Switch platform ([@grillp] - [#26513]) ([template docs]) +- Bump ndms2-client to 0.0.9 ([@foxel] - [#26899]) ([keenetic_ndms2 docs]) +- Add voltage attribute to Xiaomi Aqara devices ([@zhumuht] - [#26876]) ([xiaomi_aqara docs]) +- Fix bed_activity history chart of the Xiaomi Aqara vibration sensor ([@zhumuht] - [#26875]) ([xiaomi_aqara docs]) +- Fix missing whitespace around arithmetic operator ([@JeffLIrion] - [#26908]) ([xiaomi_aqara docs]) +- deCONZ - Improve ssdp discovery by storing uuid in config entry ([@Kane610] - [#26882]) ([deconz docs]) +- Add google_assistant alarm_control_panel ([@engrbm87] - [#26249]) ([google_assistant docs]) +- Add call direction sensor for Obihai ([@dshokouhi] - [#26867]) ([obihai docs]) +- deCONZ - Increase bridge discovery robustness in config flow ([@Kane610] - [#26911]) ([deconz docs]) +- Add config flow to ecobee ([@marthoc] - [#26634]) ([ecobee docs]) (breaking change) +- Remove lamps and groups from ha when removed from Hue ([@bramkragten] - [#26881]) ([hue docs]) +- Add MySensors ACK ([@petewill] - [#26894]) ([mysensors docs]) +- Add mysensors codeowner ([@MartinHjelmare] - [#26917]) ([mysensors docs]) +- Bump pyobihai, add unique ID and availability ([@dshokouhi] - [#26922]) ([obihai docs]) +- Add Plex config options support ([@jjlawren] - [#26870]) ([plex docs]) +- Add config flow to transmission ([@engrbm87] - [#26434]) ([transmission docs]) (breaking change) +- Centralize rainbird config and add binary sensor platform ([@konikvranik] - [#26393]) ([rainbird docs]) (breaking change) (new-platform) +- Add ecobee services to create and delete vacations ([@marthoc] - [#26923]) ([ecobee docs]) +- Bump androidtv to 0.0.28 ([@JeffLIrion] - [#26906]) ([androidtv docs]) +- Add more ebusd Vaillant "bai" sensors ([@sashao] - [#26750]) ([ebusd docs]) +- Add xbox live custom update interval ([@MartinHjelmare] - [#26939]) ([xbox_live docs]) +- Guard against non supported entities ([@balloob] - [#26941]) ([alexa docs]) +- Bump pyowlet to 1.0.3 ([@jaburges] - [#26892]) ([owlet docs]) +- Revert Nest HVAC mode when disabling Eco mode ([@joe248] - [#26934]) ([nest docs]) +- Fix ecobee integration ([@marthoc] - [#26951]) ([ecobee docs]) +- Add CO2 level reading for Kaiterra integration ([@Michsior14] - [#26935]) ([kaiterra docs]) +- Improve validation of device trigger config ([@emontnemery] - [#26910]) ([automation docs]) ([config docs]) ([device_automation docs]) +- Add device action support for ZHA ([@dmulcahey] - [#26903]) ([zha docs]) +- Add support for Z-Wave battery level ([@oandrew] - [#26943]) ([zwave docs]) +- Update Alexa discovery description ([@bramkragten] - [#26933]) ([alexa docs]) +- Add templates to scaffold device_trigger, device_condition, ([@balloob] - [#26871]) +- Upgrade mypy to 0.730, address raised issues ([@scop] - [#26959]) ([http docs]) +- Add hive boost to climate and water_heater ([@KJonline] - [#26789]) ([hive docs]) +- Bump Travis timeout to 50 minutes ([@scop] - [#26978]) +- Remove no longer needed Python < 3.6 compatibility code ([@scop] - [#27024]) +- Fix possible OpenUV exception due to missing data ([@bachya] - [#26958]) ([openuv docs]) +- Update pythonegardia to 1.0.40 ([@SneakSnackSnake] - [#27009]) ([egardia docs]) +- Improve ecobee service schemas ([@marthoc] - [#26955]) ([ecobee docs]) +- Add more providers, bump yessssms version to 0.4.1 ([@flowolf] - [#26874]) ([yessssms docs]) +- Upgrade youtube_dl to 2019.09.28 ([@BKPepe] - [#27031]) ([media_extractor docs]) +- Add availability_template to Template Cover platform ([@grillp] - [#26509]) ([template docs]) +- Add availability_template to Template Binary Sensor platform ([@grillp] - [#26510]) ([template docs]) +- Add availability_template to Template Fan platform ([@grillp] - [#26511]) ([template docs]) +- Add availability_template to Template Light platform ([@grillp] - [#26512]) ([template docs]) +- Add availability_template to Template Vacuum platform ([@grillp] - [#26514]) ([template docs]) +- Add create, remove of devices for HomematicIP_Cloud ([@SukramJ] - [#27030]) ([homematicip_cloud docs]) +- Add venstar support for hvac action ([@david81] - [#26956]) ([venstar docs]) +- Change hive hotwater to hot_water + bug fix ([@KJonline] - [#27038]) ([hive docs]) +- Return esphome cover position as Integer ([@neffs] - [#27039]) ([esphome docs]) +- Type hint additions ([@scop] - [#26831]) ([device_automation docs]) ([frontend docs]) ([group docs]) ([media_player docs]) ([persistent_notification docs]) ([sun docs]) ([websocket_api docs]) ([zone docs]) +- Upgrade pytest to 5.2.0 ([@scop] - [#27058]) +- Bump zha quirks to 0.0.26 ([@dmulcahey] - [#27051]) ([zha docs]) +- Add Pi-hole enable and disable services ([@johnluetke] - [#27055]) ([pi_hole docs]) +- add utc tz to forecast ([@MatthewFlamm] - [#27049]) ([darksky docs]) +- Fix rest_command when server is unreachable ([@sebasje] - [#26948]) ([rest_command docs]) +- Fix incomfort and Bump client to 0.3.5 ([@zxdavb] - [#26802]) ([incomfort docs]) (breaking change) +- Add support for SOMA Smartshades devices ([@ratsept] - [#26226]) ([soma docs]) (new-integration) +- Bump pyecobee to 0.1.4 ([@marthoc] - [#27074]) ([ecobee docs]) +- Fix SSL connections to Pi-hole ([@johnluetke] - [#27073]) ([pi_hole docs]) +- Bump shodan to 1.19.0 ([@frenck] - [#27079]) ([shodan docs]) +- Add some icons for Obihai ([@dshokouhi] - [#27075]) ([obihai docs]) +- bumped version of upstream library ([@exxamalte] - [#27083]) ([geonetnz_quakes docs]) +- Remove last of device tracker scanner ([@Kane610] - [#27082]) ([unifi docs]) +- Bugfix evohome ([@zxdavb] - [#26810]) ([evohome docs]) (breaking change) +- Add saj component ([@fredericvl] - [#26902]) ([saj docs]) (new-integration) +- Add availability_template to Template Lock platform ([@grillp] - [#26517]) ([template docs]) +- Cleanup coroutine threadsafe ([@pvizeli] - [#27080]) ([bluetooth_le_tracker docs]) ([generic docs]) ([group docs]) ([mqtt docs]) ([proxy docs]) +- Plex external config flow ([@jjlawren] - [#26936]) ([plex docs]) +- Bump attrs to 19.2.0 ([@frenck] - [#27102]) +- Update meteoalertapi to version 0.1.6 ([@rolfberkenbosch] - [#27099]) ([meteoalarm docs]) +- Nzbget services ([@chriscla] - [#26900]) ([nzbget docs]) +- Delete here_travel_time dead code COORDINATE_SCHEMA ([@eifinger] - [#27090]) ([here_travel_time docs]) +- Add missing http dependency ([@jjlawren] - [#27097]) ([plex docs]) +- Add entity registry support to ecobee integration ([@marthoc] - [#27088]) ([ecobee docs]) +- Update opentherm_gw.climate to match Climate 1.0 ([@mvn23] - [#25931]) ([opentherm_gw docs]) (breaking change) +- Improve validation of device action config ([@emontnemery] - [#27029]) ([automation docs]) +- Bump adb-shell to 0.0.3 ([@JeffLIrion] - [#27108]) ([androidtv docs]) +- Add Vera last user and low battery attributes ([@colohan] - [#27043]) ([vera docs]) +- Add neural support to amazon polly ([@bbrendon] - [#27101]) ([amazon_polly docs]) +- Bump androidtv to 0.0.29 ([@JeffLIrion] - [#27120]) ([androidtv docs]) +- Update documentation link URL for integrations in all manifests ([@frenck] - [#27114]) +- Tweak geniushub and bump client to v0.6.26 ([@zxdavb] - [#26640]) ([geniushub docs]) (breaking change) +- move ATTR_MODE to homeassistant.const ([@eifinger] - [#27118]) +- Update documentation link URL for integrations (part2) ([@frenck] - [#27117]) +- Fix generated comment in CODEOWNERS ([@tribut] - [#27115]) +- Disable flaky/slow test ([@emontnemery] - [#27125]) +- UniFi - Try to handle when UniFi erroneously marks offline client as wired ([@Kane610] - [#26960]) ([unifi docs]) +- deCONZ - Support Symfonisk sound controller with device triggers ([@Kane610] - [#26913]) ([deconz docs]) +- Add support for `for` to binary_sensor, light and switch device triggers ([@emontnemery] - [#26658]) ([device_automation docs]) +- Updated frontend to 20191002.0 ([@bramkragten] - [#27134]) ([frontend docs]) +- Fix error on failed Plex setup ([@jjlawren] - [#27132]) ([plex docs]) +- Bump up ZHA dependencies. ([@Adminiuga] - [#27127]) ([zha docs]) +- Fix unavailable climate entities in Alexa StateReport ([@ochlocracy] - [#27128]) ([alexa docs]) +- gpiozero requirement ver ([@bbrendon] - [#27129]) ([remote_rpi_gpio docs]) +- Update KNX integration to xknx 0.11.2 ([@farmio] - [#27130]) ([knx docs]) +- Display Fan entity as Fan category in Alexa ([@ochlocracy] - [#27135]) ([alexa docs]) +- Improve validation of device condition config ([@emontnemery] - [#27131]) ([automation docs]) ([binary_sensor docs]) ([light docs]) ([switch docs]) +- Fix colorTemperatureInKelvin in Alexa report when light is off ([@ochlocracy] - [#27107]) ([alexa docs]) +- Add device trigger support to sensor entities ([@emontnemery] - [#27133]) ([automation docs]) ([binary_sensor docs]) ([device_automation docs]) ([sensor docs]) +- Add Google Report State ([@balloob] - [#27112]) ([alexa docs]) ([cloud docs]) ([google_assistant docs]) + +[#22311]: https://github.com/home-assistant/home-assistant/pull/22311 +[#23495]: https://github.com/home-assistant/home-assistant/pull/23495 +[#24550]: https://github.com/home-assistant/home-assistant/pull/24550 +[#24603]: https://github.com/home-assistant/home-assistant/pull/24603 +[#25931]: https://github.com/home-assistant/home-assistant/pull/25931 +[#26046]: https://github.com/home-assistant/home-assistant/pull/26046 +[#26058]: https://github.com/home-assistant/home-assistant/pull/26058 +[#26067]: https://github.com/home-assistant/home-assistant/pull/26067 +[#26183]: https://github.com/home-assistant/home-assistant/pull/26183 +[#26208]: https://github.com/home-assistant/home-assistant/pull/26208 +[#26226]: https://github.com/home-assistant/home-assistant/pull/26226 +[#26249]: https://github.com/home-assistant/home-assistant/pull/26249 +[#26252]: https://github.com/home-assistant/home-assistant/pull/26252 +[#26253]: https://github.com/home-assistant/home-assistant/pull/26253 +[#26266]: https://github.com/home-assistant/home-assistant/pull/26266 +[#26393]: https://github.com/home-assistant/home-assistant/pull/26393 +[#26434]: https://github.com/home-assistant/home-assistant/pull/26434 +[#26453]: https://github.com/home-assistant/home-assistant/pull/26453 +[#26462]: https://github.com/home-assistant/home-assistant/pull/26462 +[#26509]: https://github.com/home-assistant/home-assistant/pull/26509 +[#26510]: https://github.com/home-assistant/home-assistant/pull/26510 +[#26511]: https://github.com/home-assistant/home-assistant/pull/26511 +[#26512]: https://github.com/home-assistant/home-assistant/pull/26512 +[#26513]: https://github.com/home-assistant/home-assistant/pull/26513 +[#26514]: https://github.com/home-assistant/home-assistant/pull/26514 +[#26516]: https://github.com/home-assistant/home-assistant/pull/26516 +[#26517]: https://github.com/home-assistant/home-assistant/pull/26517 +[#26548]: https://github.com/home-assistant/home-assistant/pull/26548 +[#26549]: https://github.com/home-assistant/home-assistant/pull/26549 +[#26552]: https://github.com/home-assistant/home-assistant/pull/26552 +[#26582]: https://github.com/home-assistant/home-assistant/pull/26582 +[#26586]: https://github.com/home-assistant/home-assistant/pull/26586 +[#26591]: https://github.com/home-assistant/home-assistant/pull/26591 +[#26592]: https://github.com/home-assistant/home-assistant/pull/26592 +[#26593]: https://github.com/home-assistant/home-assistant/pull/26593 +[#26612]: https://github.com/home-assistant/home-assistant/pull/26612 +[#26614]: https://github.com/home-assistant/home-assistant/pull/26614 +[#26616]: https://github.com/home-assistant/home-assistant/pull/26616 +[#26618]: https://github.com/home-assistant/home-assistant/pull/26618 +[#26634]: https://github.com/home-assistant/home-assistant/pull/26634 +[#26640]: https://github.com/home-assistant/home-assistant/pull/26640 +[#26642]: https://github.com/home-assistant/home-assistant/pull/26642 +[#26643]: https://github.com/home-assistant/home-assistant/pull/26643 +[#26645]: https://github.com/home-assistant/home-assistant/pull/26645 +[#26646]: https://github.com/home-assistant/home-assistant/pull/26646 +[#26648]: https://github.com/home-assistant/home-assistant/pull/26648 +[#26649]: https://github.com/home-assistant/home-assistant/pull/26649 +[#26654]: https://github.com/home-assistant/home-assistant/pull/26654 +[#26658]: https://github.com/home-assistant/home-assistant/pull/26658 +[#26659]: https://github.com/home-assistant/home-assistant/pull/26659 +[#26660]: https://github.com/home-assistant/home-assistant/pull/26660 +[#26661]: https://github.com/home-assistant/home-assistant/pull/26661 +[#26662]: https://github.com/home-assistant/home-assistant/pull/26662 +[#26663]: https://github.com/home-assistant/home-assistant/pull/26663 +[#26665]: https://github.com/home-assistant/home-assistant/pull/26665 +[#26666]: https://github.com/home-assistant/home-assistant/pull/26666 +[#26667]: https://github.com/home-assistant/home-assistant/pull/26667 +[#26669]: https://github.com/home-assistant/home-assistant/pull/26669 +[#26679]: https://github.com/home-assistant/home-assistant/pull/26679 +[#26680]: https://github.com/home-assistant/home-assistant/pull/26680 +[#26681]: https://github.com/home-assistant/home-assistant/pull/26681 +[#26685]: https://github.com/home-assistant/home-assistant/pull/26685 +[#26697]: https://github.com/home-assistant/home-assistant/pull/26697 +[#26703]: https://github.com/home-assistant/home-assistant/pull/26703 +[#26705]: https://github.com/home-assistant/home-assistant/pull/26705 +[#26708]: https://github.com/home-assistant/home-assistant/pull/26708 +[#26709]: https://github.com/home-assistant/home-assistant/pull/26709 +[#26712]: https://github.com/home-assistant/home-assistant/pull/26712 +[#26717]: https://github.com/home-assistant/home-assistant/pull/26717 +[#26718]: https://github.com/home-assistant/home-assistant/pull/26718 +[#26723]: https://github.com/home-assistant/home-assistant/pull/26723 +[#26728]: https://github.com/home-assistant/home-assistant/pull/26728 +[#26733]: https://github.com/home-assistant/home-assistant/pull/26733 +[#26738]: https://github.com/home-assistant/home-assistant/pull/26738 +[#26739]: https://github.com/home-assistant/home-assistant/pull/26739 +[#26741]: https://github.com/home-assistant/home-assistant/pull/26741 +[#26743]: https://github.com/home-assistant/home-assistant/pull/26743 +[#26746]: https://github.com/home-assistant/home-assistant/pull/26746 +[#26750]: https://github.com/home-assistant/home-assistant/pull/26750 +[#26754]: https://github.com/home-assistant/home-assistant/pull/26754 +[#26755]: https://github.com/home-assistant/home-assistant/pull/26755 +[#26759]: https://github.com/home-assistant/home-assistant/pull/26759 +[#26762]: https://github.com/home-assistant/home-assistant/pull/26762 +[#26765]: https://github.com/home-assistant/home-assistant/pull/26765 +[#26766]: https://github.com/home-assistant/home-assistant/pull/26766 +[#26769]: https://github.com/home-assistant/home-assistant/pull/26769 +[#26770]: https://github.com/home-assistant/home-assistant/pull/26770 +[#26771]: https://github.com/home-assistant/home-assistant/pull/26771 +[#26773]: https://github.com/home-assistant/home-assistant/pull/26773 +[#26775]: https://github.com/home-assistant/home-assistant/pull/26775 +[#26777]: https://github.com/home-assistant/home-assistant/pull/26777 +[#26783]: https://github.com/home-assistant/home-assistant/pull/26783 +[#26784]: https://github.com/home-assistant/home-assistant/pull/26784 +[#26787]: https://github.com/home-assistant/home-assistant/pull/26787 +[#26788]: https://github.com/home-assistant/home-assistant/pull/26788 +[#26789]: https://github.com/home-assistant/home-assistant/pull/26789 +[#26793]: https://github.com/home-assistant/home-assistant/pull/26793 +[#26794]: https://github.com/home-assistant/home-assistant/pull/26794 +[#26795]: https://github.com/home-assistant/home-assistant/pull/26795 +[#26796]: https://github.com/home-assistant/home-assistant/pull/26796 +[#26797]: https://github.com/home-assistant/home-assistant/pull/26797 +[#26799]: https://github.com/home-assistant/home-assistant/pull/26799 +[#26801]: https://github.com/home-assistant/home-assistant/pull/26801 +[#26802]: https://github.com/home-assistant/home-assistant/pull/26802 +[#26804]: https://github.com/home-assistant/home-assistant/pull/26804 +[#26805]: https://github.com/home-assistant/home-assistant/pull/26805 +[#26809]: https://github.com/home-assistant/home-assistant/pull/26809 +[#26810]: https://github.com/home-assistant/home-assistant/pull/26810 +[#26815]: https://github.com/home-assistant/home-assistant/pull/26815 +[#26819]: https://github.com/home-assistant/home-assistant/pull/26819 +[#26821]: https://github.com/home-assistant/home-assistant/pull/26821 +[#26822]: https://github.com/home-assistant/home-assistant/pull/26822 +[#26823]: https://github.com/home-assistant/home-assistant/pull/26823 +[#26824]: https://github.com/home-assistant/home-assistant/pull/26824 +[#26825]: https://github.com/home-assistant/home-assistant/pull/26825 +[#26826]: https://github.com/home-assistant/home-assistant/pull/26826 +[#26829]: https://github.com/home-assistant/home-assistant/pull/26829 +[#26831]: https://github.com/home-assistant/home-assistant/pull/26831 +[#26832]: https://github.com/home-assistant/home-assistant/pull/26832 +[#26835]: https://github.com/home-assistant/home-assistant/pull/26835 +[#26847]: https://github.com/home-assistant/home-assistant/pull/26847 +[#26849]: https://github.com/home-assistant/home-assistant/pull/26849 +[#26852]: https://github.com/home-assistant/home-assistant/pull/26852 +[#26861]: https://github.com/home-assistant/home-assistant/pull/26861 +[#26866]: https://github.com/home-assistant/home-assistant/pull/26866 +[#26867]: https://github.com/home-assistant/home-assistant/pull/26867 +[#26870]: https://github.com/home-assistant/home-assistant/pull/26870 +[#26871]: https://github.com/home-assistant/home-assistant/pull/26871 +[#26872]: https://github.com/home-assistant/home-assistant/pull/26872 +[#26874]: https://github.com/home-assistant/home-assistant/pull/26874 +[#26875]: https://github.com/home-assistant/home-assistant/pull/26875 +[#26876]: https://github.com/home-assistant/home-assistant/pull/26876 +[#26880]: https://github.com/home-assistant/home-assistant/pull/26880 +[#26881]: https://github.com/home-assistant/home-assistant/pull/26881 +[#26882]: https://github.com/home-assistant/home-assistant/pull/26882 +[#26883]: https://github.com/home-assistant/home-assistant/pull/26883 +[#26884]: https://github.com/home-assistant/home-assistant/pull/26884 +[#26885]: https://github.com/home-assistant/home-assistant/pull/26885 +[#26887]: https://github.com/home-assistant/home-assistant/pull/26887 +[#26888]: https://github.com/home-assistant/home-assistant/pull/26888 +[#26890]: https://github.com/home-assistant/home-assistant/pull/26890 +[#26892]: https://github.com/home-assistant/home-assistant/pull/26892 +[#26894]: https://github.com/home-assistant/home-assistant/pull/26894 +[#26899]: https://github.com/home-assistant/home-assistant/pull/26899 +[#26900]: https://github.com/home-assistant/home-assistant/pull/26900 +[#26902]: https://github.com/home-assistant/home-assistant/pull/26902 +[#26903]: https://github.com/home-assistant/home-assistant/pull/26903 +[#26906]: https://github.com/home-assistant/home-assistant/pull/26906 +[#26908]: https://github.com/home-assistant/home-assistant/pull/26908 +[#26910]: https://github.com/home-assistant/home-assistant/pull/26910 +[#26911]: https://github.com/home-assistant/home-assistant/pull/26911 +[#26913]: https://github.com/home-assistant/home-assistant/pull/26913 +[#26917]: https://github.com/home-assistant/home-assistant/pull/26917 +[#26922]: https://github.com/home-assistant/home-assistant/pull/26922 +[#26923]: https://github.com/home-assistant/home-assistant/pull/26923 +[#26933]: https://github.com/home-assistant/home-assistant/pull/26933 +[#26934]: https://github.com/home-assistant/home-assistant/pull/26934 +[#26935]: https://github.com/home-assistant/home-assistant/pull/26935 +[#26936]: https://github.com/home-assistant/home-assistant/pull/26936 +[#26939]: https://github.com/home-assistant/home-assistant/pull/26939 +[#26941]: https://github.com/home-assistant/home-assistant/pull/26941 +[#26943]: https://github.com/home-assistant/home-assistant/pull/26943 +[#26948]: https://github.com/home-assistant/home-assistant/pull/26948 +[#26951]: https://github.com/home-assistant/home-assistant/pull/26951 +[#26955]: https://github.com/home-assistant/home-assistant/pull/26955 +[#26956]: https://github.com/home-assistant/home-assistant/pull/26956 +[#26958]: https://github.com/home-assistant/home-assistant/pull/26958 +[#26959]: https://github.com/home-assistant/home-assistant/pull/26959 +[#26960]: https://github.com/home-assistant/home-assistant/pull/26960 +[#26978]: https://github.com/home-assistant/home-assistant/pull/26978 +[#27009]: https://github.com/home-assistant/home-assistant/pull/27009 +[#27024]: https://github.com/home-assistant/home-assistant/pull/27024 +[#27029]: https://github.com/home-assistant/home-assistant/pull/27029 +[#27030]: https://github.com/home-assistant/home-assistant/pull/27030 +[#27031]: https://github.com/home-assistant/home-assistant/pull/27031 +[#27038]: https://github.com/home-assistant/home-assistant/pull/27038 +[#27039]: https://github.com/home-assistant/home-assistant/pull/27039 +[#27043]: https://github.com/home-assistant/home-assistant/pull/27043 +[#27049]: https://github.com/home-assistant/home-assistant/pull/27049 +[#27051]: https://github.com/home-assistant/home-assistant/pull/27051 +[#27055]: https://github.com/home-assistant/home-assistant/pull/27055 +[#27058]: https://github.com/home-assistant/home-assistant/pull/27058 +[#27073]: https://github.com/home-assistant/home-assistant/pull/27073 +[#27074]: https://github.com/home-assistant/home-assistant/pull/27074 +[#27075]: https://github.com/home-assistant/home-assistant/pull/27075 +[#27079]: https://github.com/home-assistant/home-assistant/pull/27079 +[#27080]: https://github.com/home-assistant/home-assistant/pull/27080 +[#27082]: https://github.com/home-assistant/home-assistant/pull/27082 +[#27083]: https://github.com/home-assistant/home-assistant/pull/27083 +[#27088]: https://github.com/home-assistant/home-assistant/pull/27088 +[#27090]: https://github.com/home-assistant/home-assistant/pull/27090 +[#27097]: https://github.com/home-assistant/home-assistant/pull/27097 +[#27099]: https://github.com/home-assistant/home-assistant/pull/27099 +[#27101]: https://github.com/home-assistant/home-assistant/pull/27101 +[#27102]: https://github.com/home-assistant/home-assistant/pull/27102 +[#27107]: https://github.com/home-assistant/home-assistant/pull/27107 +[#27108]: https://github.com/home-assistant/home-assistant/pull/27108 +[#27112]: https://github.com/home-assistant/home-assistant/pull/27112 +[#27114]: https://github.com/home-assistant/home-assistant/pull/27114 +[#27115]: https://github.com/home-assistant/home-assistant/pull/27115 +[#27117]: https://github.com/home-assistant/home-assistant/pull/27117 +[#27118]: https://github.com/home-assistant/home-assistant/pull/27118 +[#27120]: https://github.com/home-assistant/home-assistant/pull/27120 +[#27125]: https://github.com/home-assistant/home-assistant/pull/27125 +[#27127]: https://github.com/home-assistant/home-assistant/pull/27127 +[#27128]: https://github.com/home-assistant/home-assistant/pull/27128 +[#27129]: https://github.com/home-assistant/home-assistant/pull/27129 +[#27130]: https://github.com/home-assistant/home-assistant/pull/27130 +[#27131]: https://github.com/home-assistant/home-assistant/pull/27131 +[#27132]: https://github.com/home-assistant/home-assistant/pull/27132 +[#27133]: https://github.com/home-assistant/home-assistant/pull/27133 +[#27134]: https://github.com/home-assistant/home-assistant/pull/27134 +[#27135]: https://github.com/home-assistant/home-assistant/pull/27135 +[@Adminiuga]: https://github.com/Adminiuga +[@BKPepe]: https://github.com/BKPepe +[@Bouni]: https://github.com/Bouni +[@CQoute]: https://github.com/CQoute +[@Danielhiversen]: https://github.com/Danielhiversen +[@HarlemSquirrel]: https://github.com/HarlemSquirrel +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@KJonline]: https://github.com/KJonline +[@Kane610]: https://github.com/Kane610 +[@KiLLeRRaT]: https://github.com/KiLLeRRaT +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@Michsior14]: https://github.com/Michsior14 +[@SNoof85]: https://github.com/SNoof85 +[@SneakSnackSnake]: https://github.com/SneakSnackSnake +[@SukramJ]: https://github.com/SukramJ +[@Swamp-Ig]: https://github.com/Swamp-Ig +[@ViViDboarder]: https://github.com/ViViDboarder +[@abmantis]: https://github.com/abmantis +[@amelchio]: https://github.com/amelchio +[@amigan]: https://github.com/amigan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bbrendon]: https://github.com/bbrendon +[@bramkragten]: https://github.com/bramkragten +[@bryanyork]: https://github.com/bryanyork +[@chriscla]: https://github.com/chriscla +[@colohan]: https://github.com/colohan +[@david81]: https://github.com/david81 +[@definitio]: https://github.com/definitio +[@dmulcahey]: https://github.com/dmulcahey +[@doudz]: https://github.com/doudz +[@dshokouhi]: https://github.com/dshokouhi +[@eifinger]: https://github.com/eifinger +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@farmio]: https://github.com/farmio +[@flowolf]: https://github.com/flowolf +[@flz]: https://github.com/flz +[@foxel]: https://github.com/foxel +[@fredericvl]: https://github.com/fredericvl +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@ggravlingen]: https://github.com/ggravlingen +[@gibman]: https://github.com/gibman +[@grillp]: https://github.com/grillp +[@jaburges]: https://github.com/jaburges +[@jesserizzo]: https://github.com/jesserizzo +[@jjlawren]: https://github.com/jjlawren +[@joe248]: https://github.com/joe248 +[@johnluetke]: https://github.com/johnluetke +[@konikvranik]: https://github.com/konikvranik +[@larssont]: https://github.com/larssont +[@majuss]: https://github.com/majuss +[@marthoc]: https://github.com/marthoc +[@michaeldavie]: https://github.com/michaeldavie +[@mvn23]: https://github.com/mvn23 +[@neffs]: https://github.com/neffs +[@oandrew]: https://github.com/oandrew +[@ochlocracy]: https://github.com/ochlocracy +[@petewill]: https://github.com/petewill +[@pgilad]: https://github.com/pgilad +[@piitaya]: https://github.com/piitaya +[@poofyteddy]: https://github.com/poofyteddy +[@pvizeli]: https://github.com/pvizeli +[@ratsept]: https://github.com/ratsept +[@rishatik92]: https://github.com/rishatik92 +[@roblandry]: https://github.com/roblandry +[@robmarkcole]: https://github.com/robmarkcole +[@rolfberkenbosch]: https://github.com/rolfberkenbosch +[@sanyatuning]: https://github.com/sanyatuning +[@sashao]: https://github.com/sashao +[@scheric]: https://github.com/scheric +[@scop]: https://github.com/scop +[@sebasje]: https://github.com/sebasje +[@shutupflanders]: https://github.com/shutupflanders +[@snowzach]: https://github.com/snowzach +[@squishykid]: https://github.com/squishykid +[@thecynic]: https://github.com/thecynic +[@timmccor]: https://github.com/timmccor +[@tleegaard]: https://github.com/tleegaard +[@tribut]: https://github.com/tribut +[@tsvi]: https://github.com/tsvi +[@zewelor]: https://github.com/zewelor +[@zhumuht]: https://github.com/zhumuht +[@zxdavb]: https://github.com/zxdavb +[alexa docs]: https://www.home-assistant.io/integrations/alexa/ +[amazon_polly docs]: https://www.home-assistant.io/integrations/amazon_polly/ +[androidtv docs]: https://www.home-assistant.io/integrations/androidtv/ +[automation docs]: https://www.home-assistant.io/integrations/automation/ +[binary_sensor docs]: https://www.home-assistant.io/integrations/binary_sensor/ +[bluetooth_le_tracker docs]: https://www.home-assistant.io/integrations/bluetooth_le_tracker/ +[bluetooth_tracker docs]: https://www.home-assistant.io/integrations/bluetooth_tracker/ +[bmw_connected_drive docs]: https://www.home-assistant.io/integrations/bmw_connected_drive/ +[cert_expiry docs]: https://www.home-assistant.io/integrations/cert_expiry/ +[cloud docs]: https://www.home-assistant.io/integrations/cloud/ +[config docs]: https://www.home-assistant.io/integrations/config/ +[cover docs]: https://www.home-assistant.io/integrations/cover/ +[darksky docs]: https://www.home-assistant.io/integrations/darksky/ +[deconz docs]: https://www.home-assistant.io/integrations/deconz/ +[device_automation docs]: https://www.home-assistant.io/integrations/device_automation/ +[doods docs]: https://www.home-assistant.io/integrations/doods/ +[ebusd docs]: https://www.home-assistant.io/integrations/ebusd/ +[ecobee docs]: https://www.home-assistant.io/integrations/ecobee/ +[egardia docs]: https://www.home-assistant.io/integrations/egardia/ +[elv docs]: https://www.home-assistant.io/integrations/elv/ +[enphase_envoy docs]: https://www.home-assistant.io/integrations/enphase_envoy/ +[environment_canada docs]: https://www.home-assistant.io/integrations/environment_canada/ +[esphome docs]: https://www.home-assistant.io/integrations/esphome/ +[evohome docs]: https://www.home-assistant.io/integrations/evohome/ +[fedex docs]: https://www.home-assistant.io/integrations/fedex/ +[frontend docs]: https://www.home-assistant.io/integrations/frontend/ +[generic docs]: https://www.home-assistant.io/integrations/generic/ +[geniushub docs]: https://www.home-assistant.io/integrations/geniushub/ +[geonetnz_quakes docs]: https://www.home-assistant.io/integrations/geonetnz_quakes/ +[glances docs]: https://www.home-assistant.io/integrations/glances/ +[google_assistant docs]: https://www.home-assistant.io/integrations/google_assistant/ +[group docs]: https://www.home-assistant.io/integrations/group/ +[here_travel_time docs]: https://www.home-assistant.io/integrations/here_travel_time/ +[hive docs]: https://www.home-assistant.io/integrations/hive/ +[homekit docs]: https://www.home-assistant.io/integrations/homekit/ +[homekit_controller docs]: https://www.home-assistant.io/integrations/homekit_controller/ +[homematicip_cloud docs]: https://www.home-assistant.io/integrations/homematicip_cloud/ +[http docs]: https://www.home-assistant.io/integrations/http/ +[hue docs]: https://www.home-assistant.io/integrations/hue/ +[iaqualink docs]: https://www.home-assistant.io/integrations/iaqualink/ +[image_processing docs]: https://www.home-assistant.io/integrations/image_processing/ +[incomfort docs]: https://www.home-assistant.io/integrations/incomfort/ +[influxdb docs]: https://www.home-assistant.io/integrations/influxdb/ +[iperf3 docs]: https://www.home-assistant.io/integrations/iperf3/ +[izone docs]: https://www.home-assistant.io/integrations/izone/ +[kaiterra docs]: https://www.home-assistant.io/integrations/kaiterra/ +[keenetic_ndms2 docs]: https://www.home-assistant.io/integrations/keenetic_ndms2/ +[knx docs]: https://www.home-assistant.io/integrations/knx/ +[lcn docs]: https://www.home-assistant.io/integrations/lcn/ +[lifx docs]: https://www.home-assistant.io/integrations/lifx/ +[lifx_cloud docs]: https://www.home-assistant.io/integrations/lifx_cloud/ +[lifx_legacy docs]: https://www.home-assistant.io/integrations/lifx_legacy/ +[light docs]: https://www.home-assistant.io/integrations/light/ +[linksys_ap docs]: https://www.home-assistant.io/integrations/linksys_ap/ +[linky docs]: https://www.home-assistant.io/integrations/linky/ +[luci docs]: https://www.home-assistant.io/integrations/luci/ +[media_extractor docs]: https://www.home-assistant.io/integrations/media_extractor/ +[media_player docs]: https://www.home-assistant.io/integrations/media_player/ +[meteoalarm docs]: https://www.home-assistant.io/integrations/meteoalarm/ +[moscow_yandex_transport docs]: https://www.home-assistant.io/integrations/moscow_yandex_transport/ +[mqtt docs]: https://www.home-assistant.io/integrations/mqtt/ +[mysensors docs]: https://www.home-assistant.io/integrations/mysensors/ +[nest docs]: https://www.home-assistant.io/integrations/nest/ +[netgear_lte docs]: https://www.home-assistant.io/integrations/netgear_lte/ +[nextbus docs]: https://www.home-assistant.io/integrations/nextbus/ +[nws docs]: https://www.home-assistant.io/integrations/nws/ +[nzbget docs]: https://www.home-assistant.io/integrations/nzbget/ +[obihai docs]: https://www.home-assistant.io/integrations/obihai/ +[ombi docs]: https://www.home-assistant.io/integrations/ombi/ +[onvif docs]: https://www.home-assistant.io/integrations/onvif/ +[opentherm_gw docs]: https://www.home-assistant.io/integrations/opentherm_gw/ +[openuv docs]: https://www.home-assistant.io/integrations/openuv/ +[otp docs]: https://www.home-assistant.io/integrations/otp/ +[owlet docs]: https://www.home-assistant.io/integrations/owlet/ +[persistent_notification docs]: https://www.home-assistant.io/integrations/persistent_notification/ +[pi_hole docs]: https://www.home-assistant.io/integrations/pi_hole/ +[plex docs]: https://www.home-assistant.io/integrations/plex/ +[proxy docs]: https://www.home-assistant.io/integrations/proxy/ +[rainbird docs]: https://www.home-assistant.io/integrations/rainbird/ +[remote_rpi_gpio docs]: https://www.home-assistant.io/integrations/remote_rpi_gpio/ +[rest_command docs]: https://www.home-assistant.io/integrations/rest_command/ +[saj docs]: https://www.home-assistant.io/integrations/saj/ +[sendgrid docs]: https://www.home-assistant.io/integrations/sendgrid/ +[sensor docs]: https://www.home-assistant.io/integrations/sensor/ +[shodan docs]: https://www.home-assistant.io/integrations/shodan/ +[simplisafe docs]: https://www.home-assistant.io/integrations/simplisafe/ +[solaredge_local docs]: https://www.home-assistant.io/integrations/solaredge_local/ +[solax docs]: https://www.home-assistant.io/integrations/solax/ +[soma docs]: https://www.home-assistant.io/integrations/soma/ +[sonos docs]: https://www.home-assistant.io/integrations/sonos/ +[spaceapi docs]: https://www.home-assistant.io/integrations/spaceapi/ +[srp_energy docs]: https://www.home-assistant.io/integrations/srp_energy/ +[sun docs]: https://www.home-assistant.io/integrations/sun/ +[switch docs]: https://www.home-assistant.io/integrations/switch/ +[sytadin docs]: https://www.home-assistant.io/integrations/sytadin/ +[template docs]: https://www.home-assistant.io/integrations/template/ +[tensorflow docs]: https://www.home-assistant.io/integrations/tensorflow/ +[tfiac docs]: https://www.home-assistant.io/integrations/tfiac/ +[tibber docs]: https://www.home-assistant.io/integrations/tibber/ +[torque docs]: https://www.home-assistant.io/integrations/torque/ +[tradfri docs]: https://www.home-assistant.io/integrations/tradfri/ +[transmission docs]: https://www.home-assistant.io/integrations/transmission/ +[unifi docs]: https://www.home-assistant.io/integrations/unifi/ +[ups docs]: https://www.home-assistant.io/integrations/ups/ +[usps docs]: https://www.home-assistant.io/integrations/usps/ +[velux docs]: https://www.home-assistant.io/integrations/velux/ +[venstar docs]: https://www.home-assistant.io/integrations/venstar/ +[vera docs]: https://www.home-assistant.io/integrations/vera/ +[vivotek docs]: https://www.home-assistant.io/integrations/vivotek/ +[volumio docs]: https://www.home-assistant.io/integrations/volumio/ +[watson_tts docs]: https://www.home-assistant.io/integrations/watson_tts/ +[websocket_api docs]: https://www.home-assistant.io/integrations/websocket_api/ +[wemo docs]: https://www.home-assistant.io/integrations/wemo/ +[whois docs]: https://www.home-assistant.io/integrations/whois/ +[wwlln docs]: https://www.home-assistant.io/integrations/wwlln/ +[xbox_live docs]: https://www.home-assistant.io/integrations/xbox_live/ +[xiaomi_aqara docs]: https://www.home-assistant.io/integrations/xiaomi_aqara/ +[yandex_transport docs]: https://www.home-assistant.io/integrations/yandex_transport/ +[yessssms docs]: https://www.home-assistant.io/integrations/yessssms/ +[zha docs]: https://www.home-assistant.io/integrations/zha/ +[zone docs]: https://www.home-assistant.io/integrations/zone/ +[zwave docs]: https://www.home-assistant.io/integrations/zwave/ From 8f7547ea09da5e977d1b2f487650943c662d805f Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Thu, 3 Oct 2019 22:49:28 +0200 Subject: [PATCH 02/45] Update binary_sensor.mqtt.markdown (#10592) --- source/_integrations/binary_sensor.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index e41e082b120..cf67732d53d 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -81,7 +81,7 @@ unique_id: required: false type: string device_class: - description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend. + description: Sets the [class of the device](/integrations/binary_sensor/#device-class), changing the device state and icon that is displayed on the frontend. required: false type: string value_template: From 6c5a61c90be19d6927217de14455f50297ec0c2c Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Fri, 4 Oct 2019 13:16:28 +0100 Subject: [PATCH 03/45] Insolvency (#10599) Add warning that Nello have ceased to exist and locks will stop working soon. --- source/_integrations/nello.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/nello.markdown b/source/_integrations/nello.markdown index 5c9f09e8d0f..fc1d5492e3b 100644 --- a/source/_integrations/nello.markdown +++ b/source/_integrations/nello.markdown @@ -9,6 +9,10 @@ ha_release: 0.52 ha_iot_class: Cloud Polling --- +
+Locumi Labs, the manufacturer of Nello, entered insolvency on the 2nd of October 2019 closed their cloud service. Since Nello One locks require this cloud service, the locks will cease to operate as of the 18th October 2019. +
+ The `nello` platform allows you to control [Nello](https://www.nello.io) intercoms. To get started you need to create a secondary Nello account and authorize it to access your lock(s). From a8a6bddb07551c4e2a84d27428422b182af99e48 Mon Sep 17 00:00:00 2001 From: Malachi Soord Date: Fri, 4 Oct 2019 23:26:30 +0200 Subject: [PATCH 04/45] Update index.markdown (#10609) --- source/lovelace/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown index 18a1de3fa06..16fe29c0167 100644 --- a/source/lovelace/index.markdown +++ b/source/lovelace/index.markdown @@ -24,7 +24,7 @@ To try it yourself, check out [the demo](https://demo.home-assistant.io). ## Discuss Lovelace -- Suggestions are welcome in the [ui-schema repository](https://github.com/home-assistant/ui-schema) +- Suggestions are welcome in the [home-assistant-polymer repository](https://github.com/home-assistant/home-assistant-polymer/) - For help with Lovelace, join the #lovelace channel on [our chat](/join-chat/) or [our forums](https://community.home-assistant.io/c/projects/frontend) ## Additional Lovelace Resources From 90cdb0b74b0ff9b106245ef2f5670481804a68a3 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Fri, 4 Oct 2019 23:35:43 +0200 Subject: [PATCH 05/45] Fix links to `device_class` for MQTT sensor (#10593) * Update sensor.mqtt.markdown * Update sensor.mqtt.markdown --- source/_integrations/sensor.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index 303315d655d..f2629506fc8 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -89,7 +89,7 @@ unique_id: required: false type: string device_class: - description: The type/class of the sensor to set the icon in the frontend. + description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend. required: false type: device_class default: None From 26fbd6d35a356d8cebb2b27f34d5a02cfe851682 Mon Sep 17 00:00:00 2001 From: dasadi <55808280+dasadi@users.noreply.github.com> Date: Fri, 4 Oct 2019 23:39:31 +0200 Subject: [PATCH 06/45] Fixes 4 links in blog posts (#10600) --- ...9-insteon-lifx-twitter-and-zigbee.markdown | 2 +- ...-you-should-know-about-senic-covi.markdown | 2 +- .../2017-11-05-frontend-translations.markdown | 2 +- ...04-introducing-home-assistant-cli.markdown | 22 +++++++++---------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown b/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown index b8d91566e6e..a51912801d5 100644 --- a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown +++ b/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown @@ -43,7 +43,7 @@ Example of the new views in the frontend. Learn m - Bugfixes by [@molobrakos], [@MartinHjelmare], [@pavoni], [@trollkarlen], [@zmrow], [@maddox], [@persandstrom], [@happyleavesaoc], [@balloob], [@fabaff], [@stefan-jonasson], [@haraldnagel]. [the demo]: /demo/ -[command sensor]: /integrations/binary_sensor.command/ +[command sensor]: /integrations/command_line/ [Insteon hub]: /integrations/insteon/ [LIFX]: /integrations/lifx [Nest]: /integrations/nest/ diff --git a/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown b/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown index cd4807a0ea2..cc59c688293 100644 --- a/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown +++ b/source/_posts/2017-06-20-things-you-should-know-about-senic-covi.markdown @@ -58,7 +58,7 @@ Core Developer, Home Assistant [netdisco-contrib]: https://github.com/home-assistant/netdisco/pull/94 [hotfix]: /blog/2017/02/25/config-panel-and-state-restoration/#release-0392---march-1 [Hass.io]: /hassio/ -[to Forbes]: https://webcache.googleusercontent.com/search?q=cache:https://www.forbes.com/sites/paularmstrongtech/2017/06/19/covi-is-about-to-make-some-general-electric-execs-very-unhappy/ +[to Forbes]: https://www.forbes.com/sites/paularmstrongtech/2017/06/20/covi-is-about-to-make-some-general-electric-execs-very-unhappy/ [tradfri]: /blog/2017/04/17/ikea-tradfri-internet-of-things-done-right/ [Nuimo]: /integrations/nuimo_controller/ [developer documentation]: http://blog.senic.com/posts/the-senic-hub-a-brief-software-overview diff --git a/source/_posts/2017-11-05-frontend-translations.markdown b/source/_posts/2017-11-05-frontend-translations.markdown index 1975936ad52..dcf08d8e3e9 100644 --- a/source/_posts/2017-11-05-frontend-translations.markdown +++ b/source/_posts/2017-11-05-frontend-translations.markdown @@ -17,7 +17,7 @@ The Home Assistant sidebar in 12 different languages. As mentioned in the [0.57 release notes](/blog/2017/11/04/release-57/), Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. [@c727] took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with [Lokalise](https://lokalise.co/) to manage our translations! -Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our [public signup link](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/), and start translating right away. We’ve created a [translation startup guide](/developers/frontend_translation/) with additional details about how to contribute. Instructions are provided there for how to request a new language. +Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our [public signup link](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/), and start translating right away. We’ve created a [translation startup guide](https://developers.home-assistant.io/docs/en/internationalization_translation.html) with additional details about how to contribute. Instructions are provided there for how to request a new language. Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright! diff --git a/source/_posts/2019-02-04-introducing-home-assistant-cli.markdown b/source/_posts/2019-02-04-introducing-home-assistant-cli.markdown index 8f2f26a39e7..62d992d4864 100644 --- a/source/_posts/2019-02-04-introducing-home-assistant-cli.markdown +++ b/source/_posts/2019-02-04-introducing-home-assistant-cli.markdown @@ -20,7 +20,7 @@ Last week we released version 0.4, which provides majority of the features I was looking for to do from a CLI. ## Feature highlights: - + - Get configuration info (`hass-cli config`) - List, get, edit and delete state for entities (`hass-cli entity`') - Query history with relative time ('hass-cli entity history') @@ -36,29 +36,29 @@ looking for to do from a CLI. ## Usage -For the basic intro to `hass-cli` see the docs at [github](github-hass-cli). +For the basic intro to `hass-cli` see the docs at [github][github-hass-cli]. ## Installation Install latest `homeassistant-cli` by pip: $ pip3 install homeassistant-cli - + or if upgrade use: $ pip3 install --upgrade homeassistant-cli - + or if you like an isolated install you can use [pipsi][pipsi] $ pipsi install --python python3 homeassistant-cli -or if you are adventurous you can build it from [source][github-hass-cli] at. +or if you are adventurous you can build it from [source][github-hass-cli] at. ## Changes since 0.1-0.3 -The first thing is that the commands have been cleaned up to be more logcial/explicit. +The first thing is that the commands have been cleaned up to be more logcial/explicit. - $ hass-cli + $ hass-cli ... ... Commands: @@ -113,7 +113,7 @@ If you still want to get all the glory details you can use `-o yaml` to get the A few frequent asked questions we've seen the last months are as follows: -### Why would anyone use this ? +### Why would anyone use this ? This is not removing or trying to compete with existing ways to access Home Assistant - this is a complementary way to access Home Assistant. If you like to @@ -132,7 +132,7 @@ type out. Finally over time as `hass-cli` will get support for utilizing the more extensive websocket API's `hass-cli` will be more consistent and simpler to use than using "raw" access via `curl`. -### Does this only work with HTTPS and hass.io ? +### Does this only work with HTTPS and hass.io ? No, it works with *any* Home Assistant that has REST API exposed - something that is done by default. In short - if you can access Home Assistant with your @@ -146,7 +146,7 @@ No, `hass-cli` does not require Home Assistant installed on the computer you want to run it on. It should run on any install with Python 3.5 or higher on all major operating systems. -### Does this work with client-generated certificates ? +### Does this work with client-generated certificates ? It should, but we have not yet been able to verify it. If you would like to help us try it run with `--cert ` and let us know if it works on @@ -159,7 +159,7 @@ system control commands (like refreshing groups, restarting, etc.) but also for accessing hass.io add-ons. Also having an easy way to hook into the event bus (via websocket) to see what is happening live. -What would you like to see ? +What would you like to see ? ## Feedback From f29d4d7ea13aba50a4e18b4b17bcd6c040584cad Mon Sep 17 00:00:00 2001 From: Santobert Date: Sat, 5 Oct 2019 00:31:09 +0200 Subject: [PATCH 07/45] Clarify the behavior of the updater component (#10598) * clarify behavior of updater * Move the text * note environment --- source/_integrations/updater.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/updater.markdown b/source/_integrations/updater.markdown index 96204e76d93..0833d8af843 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -12,6 +12,12 @@ The `updater` binary sensor will check daily for new releases. The state will be The updater integration will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/integrations/updater). +
+ +The `updater` binary sensor will wait one hour after startup until it performs the first update. For this period it will be in the state `unavailable`. After that it will check once a day for new releases. + +
+ ## Configuration To integrate this into Home Assistant, add the following section to your `configuration.yaml` file: From 9806c413e0bd445211e1ac6d5bc3f36327bc9073 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Sat, 5 Oct 2019 14:11:28 +0200 Subject: [PATCH 08/45] Add frontend release notes (#10601) * Add frontend release notes * Add links --- source/_posts/2019-10-09-release-100.markdown | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/source/_posts/2019-10-09-release-100.markdown b/source/_posts/2019-10-09-release-100.markdown index f05e2ef12e9..c115d96e8e2 100644 --- a/source/_posts/2019-10-09-release-100.markdown +++ b/source/_posts/2019-10-09-release-100.markdown @@ -19,6 +19,40 @@ TBD TBD +## Frontend + +### Lovelace + +[@iantrich](https://github.com/iantrich) fire has not been put out yet. This version he has also added many new functions to Lovelace! Check the [Lovelace changelog](https://www.home-assistant.io/lovelace/changelog/) for all changes. + +#### Some hightlights: +- There are a lot more option for state filtering +- We have a bunch of new UI editors +- A new action `url` to link to external sites + +### Automation editor + +[@emontnemery](https://github.com/emontnemery) has added a bunch of functions to the automation editor, you can now use `and` and `or` conditions, and give your automation a description so you know why you did what you did. + +### Devices + +When we are on automations, we have taken that to the last release introduced device page. You can now see all the triggers, conditions and actions the device supports, and create an automation with it in 1 click. + +Also the entity registry is added to the device page, so you can change all the settings of the devices entities in one place. +By default the disabled entities are now hidden, you can show them with the switch on the top. + +### We say goodbye to JSON + +On the backend we have been using YAML for a long time, but on the frontend, we still used JSON for a lot of things. JSON is harder to write than YAML so we have aligned that. All data inputs on the frontend now accept YAML. You can still use JSON, as JSON is valid YAML. + +This includes: + +- The automation editor +- The script editor +- Services data in dev tools +- States in dev tools +- Events in dev tools + ## New Integrations - Add support for DOODS Image Processing ([@snowzach] - [#26208]) ([doods docs]) (new-integration) @@ -274,6 +308,50 @@ TBD - Add device trigger support to sensor entities ([@emontnemery] - [#27133]) ([automation docs]) ([binary_sensor docs]) ([device_automation docs]) ([sensor docs]) - Add Google Report State ([@balloob] - [#27112]) ([alexa docs]) ([cloud docs]) ([google_assistant docs]) +## All frontend changes + +* Fix dark switch for map card editor ([#3856](https://github.com/home-assistant/home-assistant-polymer/pull/3856)) [@bramkragten](https://github.com/bramkragten) +* Align background with tiles ([#3858](https://github.com/home-assistant/home-assistant-polymer/pull/3858)) [@bramkragten](https://github.com/bramkragten) +* Allow yaml in dev states ([#3859](https://github.com/home-assistant/home-assistant-polymer/pull/3859)) [@bramkragten](https://github.com/bramkragten) +* Allow yaml in dev services ([#3860](https://github.com/home-assistant/home-assistant-polymer/pull/3860)) [@bramkragten](https://github.com/bramkragten) +* Allow yaml in dev events ([#3861](https://github.com/home-assistant/home-assistant-polymer/pull/3861)) [@bramkragten](https://github.com/bramkragten) +* Allow yaml in script and automation ([#3862](https://github.com/home-assistant/home-assistant-polymer/pull/3862)) [@bramkragten](https://github.com/bramkragten) +* Default hide disabled entities from entity registry ([#3863](https://github.com/home-assistant/home-assistant-polymer/pull/3863)) [@bramkragten](https://github.com/bramkragten) +* Guard for null badges ([#3841](https://github.com/home-assistant/home-assistant-polymer/pull/3841)) [@bramkragten](https://github.com/bramkragten) +* Add entity registry functions to device page ([#3843](https://github.com/home-assistant/home-assistant-polymer/pull/3843)) [@bramkragten](https://github.com/bramkragten) +* Allow user selection of text in Lovelace ([#3605](https://github.com/home-assistant/home-assistant-polymer/pull/3605)) [@iantrich](https://github.com/iantrich) +* Update documentation link URL for integrations ([#3857](https://github.com/home-assistant/home-assistant-polymer/pull/3857)) [@frenck](https://github.com/frenck) +* add actions to picture-glance entities ([#3807](https://github.com/home-assistant/home-assistant-polymer/pull/3807)) [@iantrich](https://github.com/iantrich) +* Fix some styling of ha-switch ([#3842](https://github.com/home-assistant/home-assistant-polymer/pull/3842)) [@bramkragten](https://github.com/bramkragten) +* Remove local mdc-datatable ([#3840](https://github.com/home-assistant/home-assistant-polymer/pull/3840)) [@bramkragten](https://github.com/bramkragten) +* Add missing domain icons ([#3836](https://github.com/home-assistant/home-assistant-polymer/pull/3836)) [@SeanPM5](https://github.com/SeanPM5) +* Use filter worker in data-table ([#3808](https://github.com/home-assistant/home-assistant-polymer/pull/3808)) [@bramkragten](https://github.com/bramkragten) +* add image option to entities card ([#3832](https://github.com/home-assistant/home-assistant-polymer/pull/3832)) [@iantrich](https://github.com/iantrich) +* fix alignment of switches positioned absolutely ([#3812](https://github.com/home-assistant/home-assistant-polymer/pull/3812)) [@iantrich](https://github.com/iantrich) +* add state_filter to picture cards ([#3791](https://github.com/home-assistant/home-assistant-polymer/pull/3791)) [@iantrich](https://github.com/iantrich) +* Add a setting for vibration ([#3813](https://github.com/home-assistant/home-assistant-polymer/pull/3813)) [@bramkragten](https://github.com/bramkragten) +* Add hassio supervisor and os update notice ([#3798](https://github.com/home-assistant/home-assistant-polymer/pull/3798)) [@bramkragten](https://github.com/bramkragten) +* Add name to picture entity struct ([#3809](https://github.com/home-assistant/home-assistant-polymer/pull/3809)) [@bramkragten](https://github.com/bramkragten) +* UI Editor for picture-glance card ([#3709](https://github.com/home-assistant/home-assistant-polymer/pull/3709)) [@iantrich](https://github.com/iantrich) +* Fix firefox overflow ([#3806](https://github.com/home-assistant/home-assistant-polymer/pull/3806)) [@bramkragten](https://github.com/bramkragten) +* Expand entity-filter options ([#3692](https://github.com/home-assistant/home-assistant-polymer/pull/3692)) [@iantrich](https://github.com/iantrich) +* Green shade in climate history for platforms that don't support `hvac_action` ([#3787](https://github.com/home-assistant/home-assistant-polymer/pull/3787)) [@OnFreund](https://github.com/OnFreund) +* UI editor for history-graph ([#3782](https://github.com/home-assistant/home-assistant-polymer/pull/3782)) [@iantrich](https://github.com/iantrich) +* cleanup editors ([#3786](https://github.com/home-assistant/home-assistant-polymer/pull/3786)) [@iantrich](https://github.com/iantrich) +* Add support for `and` and `or` conditions to the automation editor. ([#3724](https://github.com/home-assistant/home-assistant-polymer/pull/3724)) [@emontnemery](https://github.com/emontnemery) +* Add support for panels to cast ([#3796](https://github.com/home-assistant/home-assistant-polymer/pull/3796)) [@bramkragten](https://github.com/bramkragten) +* Move views to own folder + use update vs updated in panel view ([#3761](https://github.com/home-assistant/home-assistant-polymer/pull/3761)) [@bramkragten](https://github.com/bramkragten) +* Add Language Urdu ([#3750](https://github.com/home-assistant/home-assistant-polymer/pull/3750)) [@bramkragten](https://github.com/bramkragten) +* Add support for automation description ([#3723](https://github.com/home-assistant/home-assistant-polymer/pull/3723)) [@emontnemery](https://github.com/emontnemery) +* light-card: icon option ([#3771](https://github.com/home-assistant/home-assistant-polymer/pull/3771)) [@iantrich](https://github.com/iantrich) +* Switch paper-toggle-button to mwc-switch ([#3683](https://github.com/home-assistant/home-assistant-polymer/pull/3683)) [@iantrich](https://github.com/iantrich) +* Upgrade some deps ([#3780](https://github.com/home-assistant/home-assistant-polymer/pull/3780)) [@balloob](https://github.com/balloob) +* UI Editor for picture-entity card ([#3708](https://github.com/home-assistant/home-assistant-polymer/pull/3708)) [@iantrich](https://github.com/iantrich) +* picture entity editor fix ([#3783](https://github.com/home-assistant/home-assistant-polymer/pull/3783)) [@iantrich](https://github.com/iantrich) +* new action: url ([#3773](https://github.com/home-assistant/home-assistant-polymer/pull/3773)) [@iantrich](https://github.com/iantrich) +* Replace all default exports in common/ with named exports ([#3790](https://github.com/home-assistant/home-assistant-polymer/pull/3790)) [@iantrich](https://github.com/iantrich) +* Add device automation options to device page ([#3776](https://github.com/home-assistant/home-assistant-polymer/pull/3776)) [@bramkragten](https://github.com/bramkragten) + [#22311]: https://github.com/home-assistant/home-assistant/pull/22311 [#23495]: https://github.com/home-assistant/home-assistant/pull/23495 [#24550]: https://github.com/home-assistant/home-assistant/pull/24550 From 107414ac1372c6f01d1cf3da0608b5bc48b75a79 Mon Sep 17 00:00:00 2001 From: akasma74 Date: Sat, 5 Oct 2019 17:38:09 +0100 Subject: [PATCH 09/45] icon configuration variable: unification (#10618) * icon configuration variable: unification Unification across input_xxx integrations (and get rid of 'component' wording where necessary) * icon configuration variable: unification Unification across input_xxx integrations * icon configuration variable: unification Unification across input_xxx integrations * icon configuration variable: unification Unification across input_xxx integrations * icon configuration variable: unification Unification across input_xxx integrations (adding missing icon variable) * icon configuration variable: unification Unification across input_xxx integrations --- source/_integrations/input_boolean.markdown | 2 +- source/_integrations/input_datetime.markdown | 2 +- source/_integrations/input_number.markdown | 2 +- source/_integrations/input_select.markdown | 2 +- source/_integrations/input_text.markdown | 4 ++++ 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index 004535156ee..fb559e5df5d 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -37,7 +37,7 @@ input_boolean: type: boolean default: false icon: - description: Icon to display for the component. + description: Icon to display in front of the input element in the frontend. required: false type: icon {% endconfiguration %} diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 5cad7382977..69c7d25143a 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -54,7 +54,7 @@ input_datetime: type: boolean default: false icon: - description: Icon to display in the frontend. + description: Icon to display in front of the input element in the frontend. required: false type: icon initial: diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 95f0dd7406c..4a601d0374f 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -74,7 +74,7 @@ input_number: required: false type: string icon: - description: Icon to display in front of the box/slider in the frontend. + description: Icon to display in front of the input element in the frontend. required: false type: icon {% endconfiguration %} diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index 886f05b2d9f..cd28d03e547 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -49,7 +49,7 @@ input_select: type: map default: First element of options icon: - description: Icon to display for the component. + description: Icon to display in front of the input element in the frontend. required: false type: icon {% endconfiguration %} diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index c765307a3c1..a43fa6a3aa4 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -53,6 +53,10 @@ input_text: required: false type: string default: empty + icon: + description: Icon to display in front of the input element in the frontend. + required: false + type: icon pattern: description: Regex pattern for client side validation. required: false From 7d8944fe5424fa5144d4c75b93caa2c395274e7a Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Sat, 5 Oct 2019 12:42:00 -0400 Subject: [PATCH 10/45] Update zwave devices page (#10603) S2 still not supported in OZW as of 10/2019 Update config github link to the OZW1.4 branch since HA is still on 1.4 and the master branch is for OZW1.6 --- source/_docs/z-wave/devices.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown index 711964c9a18..534ccb70fd2 100644 --- a/source/_docs/z-wave/devices.markdown +++ b/source/_docs/z-wave/devices.markdown @@ -33,9 +33,9 @@ The key improvements are: ### Z-Wave Security 2 -From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (March 2018) OpenZWave does not support the S2 framework. +From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (October 2019) OpenZWave does not support the S2 framework. -## Device power +## Device Power Your Z-Wave mesh network is built with the devices that are mains powered (whether directly, or via a USB adapter), these relay traffic for other nodes, building the network. These devices are always awake and you can query them, or send configuration changes, at any time. @@ -65,8 +65,8 @@ Polling needs to be enabled per device, you can control this through the *pollin The Central Scene command class isn't yet supported in OpenZWave (there is [work in progress](https://github.com/OpenZWave/open-zwave/pull/1125) to provide it it), though Home Assistant has introduced some support with [change 9178](https://github.com/home-assistant/home-assistant/pull/9178) which was part of 0.53 and [documented here](/docs/z-wave/device-specific/#homeseer-switches). -## Is my device supported +## Is my device supported? -You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave github](https://github.com/OpenZWave/open-zwave/tree/master/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months. +You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave 1.4 github](https://github.com/OpenZWave/open-zwave/tree/1.4/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months. Even if your device isn't listed there, it's likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how [you can add support](https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices) for your device if it isn't listed. From d678507ffd1c3ebd1aeb74dc5646f2f7229b4c53 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 5 Oct 2019 19:40:03 +0200 Subject: [PATCH 11/45] Fixes GitHub repository link (#10620) --- plugins/environment_variables.rb | 2 +- source/_integrations/dialogflow.markdown | 2 +- source/_integrations/samsungtv.markdown | 2 +- source/_posts/2016-10-02-hacktoberfest.markdown | 2 +- .../2016-10-22-flash-briefing-updater-hacktoberfest.markdown | 4 ++-- .../2017-02-25-config-panel-and-state-restoration.markdown | 2 +- source/_posts/2017-09-29-hacktoberfest.markdown | 2 +- source/_posts/2017-11-04-release-57.markdown | 2 +- source/cookbook/index.markdown | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/environment_variables.rb b/plugins/environment_variables.rb index 7d9203f1643..9611050ffd9 100644 --- a/plugins/environment_variables.rb +++ b/plugins/environment_variables.rb @@ -2,7 +2,7 @@ module Jekyll class EnvironmentVariablesGenerator < Generator def generate(site) # https://www.netlify.com/docs/continuous-deployment/#build-environment-variables - repo_url = ENV['REPOSITORY_URL'] || 'https://github.com/home-assistant/home-assistant.github.io' + repo_url = ENV['REPOSITORY_URL'] || 'https://github.com/home-assistant/home-assistant.io' # Rewrite urls if repo url is the ssh format. if repo_url.start_with? 'git@github.com:' diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index bb20186476a..dcbf52bcd44 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -63,7 +63,7 @@ When activated, the [`alexa` integration](/integrations/alexa/) will have Home A ## Examples -Download [this zip](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: +Download [this zip](https://github.com/home-assistant/home-assistant.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: {% raw %} ```yaml diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 68f6385a70d..4f6850422b6 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -116,7 +116,7 @@ Currently tested but not working models: None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, since Samsung have used a different (encrypted) type of interface for these. If your model is not on the list then give it a test, if everything works correctly then add it to the list on -[GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_integrations/samsungtv.markdown). +[GitHub](https://github.com/home-assistant/home-assistant.io/tree/current/source/_integrations/samsungtv.markdown). The first letter (U, P, L, H & K) represent the screen type, e.g., LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. If you add your model remember to remove these first 4 characters before adding to the list. diff --git a/source/_posts/2016-10-02-hacktoberfest.markdown b/source/_posts/2016-10-02-hacktoberfest.markdown index 328bcca4929..00542762a3d 100644 --- a/source/_posts/2016-10-02-hacktoberfest.markdown +++ b/source/_posts/2016-10-02-hacktoberfest.markdown @@ -34,7 +34,7 @@ Are you not a programmer but still want to contribute to Home Assistant? Check o [Hacktoberfest]: https://hacktoberfest.digitalocean.com/ [Hacktoberfest-reg]: https://hacktoberfest.digitalocean.com/profile [issues]: https://github.com/home-assistant/home-assistant/labels/Hacktoberfest -[issues-doc]: https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest +[issues-doc]: https://github.com/home-assistant/home-assistant.io/labels/Hacktoberfest [dev-env]: /developers/development_environment/ [dev-chat]: https://discord.gg/8X8DTH4 [dev-forum]: https://community.home-assistant.io/c/development diff --git a/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown b/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown index dc146b907a4..e681ad4b6c1 100644 --- a/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown +++ b/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown @@ -284,7 +284,7 @@ Thanks for reading all of the above, especially since this week was a pretty lon [flash-briefing-docs]: /integrations/alexa/ [hacktoberfest-blog]: /blog/2016/10/02/hacktoberfest/ [hacktoberfest-ha-prs]: https://github.com/home-assistant/home-assistant/labels/Hacktoberfest -[hacktoberfest-site-prs]: https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest +[hacktoberfest-site-prs]: https://github.com/home-assistant/home-assistant.io/labels/Hacktoberfest [hacktoberfest-website]: https://hacktoberfest.digitalocean.com/ [logo]: /images/blog/2016-10-hacktoberfest/hacktoberfest.png [min]: /integrations/min_max @@ -300,4 +300,4 @@ Thanks for reading all of the above, especially since this week was a pretty lon [zero-two-seven-release]: /blog/2016/08/28/notifications-hue-fake-unification/ [twitter]: https://twitter.com/home_assistant [robbie-twitter]: https://twitter.com/robbie -[blog-orig]: https://github.com/home-assistant/home-assistant.github.io/blob/c937242d154e509d2d84d10c51f654e20556fa21/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown +[blog-orig]: https://github.com/home-assistant/home-assistant.io/blob/c937242d154e509d2d84d10c51f654e20556fa21/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown diff --git a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown index bbf82271c5b..3c854f97a10 100644 --- a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown +++ b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown @@ -307,7 +307,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [docs]: /docs/ [getting-started]: /getting-started/ -[docs-issue]: https://github.com/home-assistant/home-assistant.github.io/issues/1603 +[docs-issue]: https://github.com/home-assistant/home-assistant.io/issues/1603 [forum]: https://community.home-assistant.io/ [issue]: https://github.com/home-assistant/home-assistant/issues diff --git a/source/_posts/2017-09-29-hacktoberfest.markdown b/source/_posts/2017-09-29-hacktoberfest.markdown index eb6044b51d2..aafcd12ced2 100644 --- a/source/_posts/2017-09-29-hacktoberfest.markdown +++ b/source/_posts/2017-09-29-hacktoberfest.markdown @@ -36,7 +36,7 @@ Our participation for [Hacktoberfest 2016][hackt-2016] was a huge success. Join [Hacktoberfest]: https://hacktoberfest.digitalocean.com/ [Hacktoberfest-reg]: https://hacktoberfest.digitalocean.com/profile [issues]: https://github.com/home-assistant/home-assistant/labels/Hacktoberfest -[issues-doc]: https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest +[issues-doc]: https://github.com/home-assistant/home-assistant.io/labels/Hacktoberfest [dev-env]: /developers/development_environment/ [dev-chat]: https://discord.gg/8X8DTH4 [dev-forum]: https://community.home-assistant.io/c/development diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown index 3eeabe6cb0d..6346353164c 100644 --- a/source/_posts/2017-11-04-release-57.markdown +++ b/source/_posts/2017-11-04-release-57.markdown @@ -35,7 +35,7 @@ Hacktoberfest is obviously about the people contributing to open source. Big tha Here are our Hacktoberfest 2017 stats. It's a miracle everyone is still alive: - Main repo: [273 Pull requests](https://github.com/home-assistant/home-assistant/pulls?utf8=%E2%9C%93&q=merged%3A%3E2017-10-01%20is%3Apr%20label%3AHacktoberfest%20is%3Aclosed%20) were merged out of 307. -- Docs repo: [295 Pull requests](https://github.com/home-assistant/home-assistant.github.io/pulls?page=1&q=merged%3A%3E2017-10-01+is%3Apr+label%3AHacktoberfest+is%3Aclosed&utf8=%E2%9C%93) merged out of 310. +- Docs repo: [295 Pull requests](https://github.com/home-assistant/home-assistant.io/pulls?page=1&q=merged%3A%3E2017-10-01+is%3Apr+label%3AHacktoberfest+is%3Aclosed&utf8=%E2%9C%93) merged out of 310. - Frontend: [57 pull requests](https://github.com/home-assistant/home-assistant-polymer/pulls?utf8=%E2%9C%93&q=merged%3A%3E2017-10-01%20is%3Apr%20label%3AHacktoberfest%20is%3Aclosed%20) merged. This means that we processed over 20 Pull requests per day. The result was already visible in 0.56. This release is almost the same. In those releases we were able to add over 40 new integrations. diff --git a/source/cookbook/index.markdown b/source/cookbook/index.markdown index 10d4d522aaf..09c1f08b525 100644 --- a/source/cookbook/index.markdown +++ b/source/cookbook/index.markdown @@ -14,7 +14,7 @@ For [`python_script:` examples](/integrations/python_script/) visit the [Scripts [sec-automation]: /integrations/#automation [organization]: /integrations/#organization -New recipes can be added via the [home-assistant.io repository](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_cookbook). +New recipes can be added via the [home-assistant.io repository](https://github.com/home-assistant/home-assistant.io/tree/current/source/_cookbook).
From 741d3f2084d0a785daf6f986c4ffbcfd5ac88719 Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Sun, 6 Oct 2019 10:45:49 +0100 Subject: [PATCH 12/45] Update glossary.yml (#10629) It came up [in this thread](https://community.home-assistant.io/t/is-there-any-basic-tutorial-on-hassio/140714/5) that the docs don't explain things like what a binary sensor is in an easy to find way. I've pulled a bunch of common platforms into this, not all, and am open to suggestions as to what others I could/should add. --- source/_data/glossary.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 25957403526..2ba4458766f 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -2,16 +2,22 @@ description: "[Actions](/docs/automation/action/) are events that fires once all triggers and conditions have been met." - topic: Automation description: "[Automations](/docs/automation/) offer the capability to call a service based on a simple or complex trigger. Automation allows a condition such as a sunset to cause an event, such as a light turning on." +- topic: Binary sensor + description: "A [binary sensor](/integrations/binary_sensor) returns information about things that only have two states - such as on or off." - topic: Component description: "Integrations (see below) used to be known as components." - topic: Condition description: "[Conditions](/docs/scripts/conditions/) are an optional part of an automation that will prevent an action from firing if they are not met." - topic: Cookbook description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community." +- topic: Cover + description: "[Covers](/integrations/cover) are devices such as blinds, garage doors, etc than can be opened and closed and optionally set to a specific position." - topic: Customize description: "[Customization](/docs/configuration/customizing-devices/) allows you to overwrite the default parameter of your devices in the configuration." - topic: Device description: "A device is usually a physical unit which can do or observe something." +- topic: Device tracker + description: "[Device trackers](/integrations/device_tracker) are used to track the presence, or location, of a device." - topic: Discovery description: "[Discovery](/integrations/discovery/) is the automatic setup of zeroconf/mDNS and uPnP devices after they are discovered." - topic: Entity @@ -30,6 +36,10 @@ description: "[Integrations](/integrations/) provide the core logic for the functionality in Home Assistant. Like `notify` provides sending notifications." - topic: Lovelace description: "[Lovelace](/lovelace/) is the name of the current frontend." +- topic: Light + description: "A [light](/integrations/light) has a brightness you can control, and optionally color temperature or RGB color control." +- topic: Notification + description: "You can use [notifications](/integrations/#notifications) to send messages, pictures, and more, to devices." - topic: Packages description: "[Packages](/docs/configuration/packages/) allow you to bundle different component configurations together." - topic: Platform @@ -38,11 +48,17 @@ description: "[Scenes](/integrations/scene/) capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red." - topic: Script description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on." +- topic: Sensor + description: "[Sensors](/integrations/sensor) return information about a thing, for instance the level of water in a tank." - topic: Service description: "[Services](/docs/scripts/service-calls/) are called to perform actions." +- topic: Switch + description: "[Switches](/integrations/switch) are things that have two states you can select between, such as turning on or off a socket." - topic: Template description: "A [template](/docs/automation/templating/) is an automation definition that can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions." - topic: Trigger description: "A [trigger](/docs/automation/trigger/) is a set of values or conditions of a platform that are defined to cause an automation to run." +- topic: TTS + description: "TTS ([text to speech](/integrations/tts) allows Home Assistant to talk to you." - topic: Zone description: "[Zones](/integrations/zone/) are areas that can be used for presence detection." From af45c0b5dd4889c7be51f5142e4a6ccf349b31f5 Mon Sep 17 00:00:00 2001 From: Phil Hawthorne Date: Sun, 6 Oct 2019 19:49:21 +1000 Subject: [PATCH 13/45] Update switch documentation for all entities (#10626) #19006 changed the way services interact with all entities. This PR just updates the documentation to reflect that the user must use `all` to target all switches --- source/_integrations/switch.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/switch.markdown b/source/_integrations/switch.markdown index 5e5ace9ec26..762cfec9c80 100644 --- a/source/_integrations/switch.markdown +++ b/source/_integrations/switch.markdown @@ -23,4 +23,4 @@ In the frontend open the sidebar. At the bottom, under **Developer Tools**, clic | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific switch. Otherwise, it targets all switches. +| `entity_id` | no | The entity ID of the switch to control. To target all switches, set the entity ID to `all`| From 19e0ab8253ab2c4c2ba45f8db8cd697145d578df Mon Sep 17 00:00:00 2001 From: scheric <38077357+scheric@users.noreply.github.com> Date: Sun, 6 Oct 2019 12:11:08 +0200 Subject: [PATCH 14/45] Fix broken links (#10617) * Fix broken link * fix link OwnTracks platform * fix link in lights built-in profiles * fix link in Configurator the source * fix link in Todoist determine.... determine what task in each project is "most" important --- source/_docs/scripts/conditions.markdown | 2 +- source/_integrations/configurator.markdown | 2 +- source/_integrations/light.markdown | 2 +- source/_integrations/todoist.markdown | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 51d3bd5b4fd..4293ca6a990 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -241,7 +241,7 @@ A better weekday condition could be by using the [Workday Binary Sensor](/integr ### Zone condition -Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/integrations/device_tracker.owntracks/) and the [iCloud platform](/integrations/device_tracker.icloud/). +Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/integrations/owntracks/) and the [iCloud platform](/integrations/icloud/). ```yaml condition: diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index 30881ae8086..d300d0ef522 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -20,4 +20,4 @@ The configurator integration allows integrations to request information from the The Hue integration in [the demo](/demo) and Plex are implemented using the configurator. See [the source of the demo integration](https://github.com/home-assistant/home-assistant/tree/dev/homeassistant/integrations/demo) for a simple example. -See [the source](https://github.com/home-assistant/home-assistant/tree/dev/homeassistant/integrations/configurator) for more details on how to use the configurator integration. +See [the source](https://github.com/home-assistant/home-assistant/tree/dev/homeassistant/components/configurator) for more details on how to use the configurator integration. diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index 332e1b4d6be..5ac5d705140 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -26,7 +26,7 @@ Most lights do not support all attributes. You can check the integration documen | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`s of lights. Else targets all. | `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. -| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/integrations/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. +| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. | `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma-separated floats that represent the color in XY. You can find a great chart here: [Hue Color Chart](https://developers.meethue.com/documentation/core-concepts#color_gets_more_complicated). | `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets. Note that the specified RGB value will not change the light brightness, only the color. diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index c0f8229784c..1632d27aaff 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -89,7 +89,7 @@ As you can see, there are 4 custom projects here: You can mix-and-match these attributes to create all sorts of custom projects. You can even use [IFTTT](https://ifttt.com/todoist) to create a task with a certain label, then have Home Assistant do some kind of automation when a task with that label comes due. -Home Assistant does its best to [determine what task in each project is "most" important](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/integrations/todoist/calendar.py), and it's that task which has its state reported. You can access the other tasks you have due soon via the `all_tasks` array (see below). +Home Assistant does its best to [determine what task in each project is "most" important](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/todoist/calendar.py), and it's that task which has its state reported. You can access the other tasks you have due soon via the `all_tasks` array (see below). ### Sensor attributes From 8c8bede5df5d15a85177f108a2c376666e3c6772 Mon Sep 17 00:00:00 2001 From: scheric <38077357+scheric@users.noreply.github.com> Date: Sun, 6 Oct 2019 16:36:29 +0200 Subject: [PATCH 15/45] fix OwnTracks in MQTT Brokers (#10638) --- source/_docs/mqtt/broker.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 6d16ee60476..553fcbb36dc 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -105,7 +105,7 @@ mqtt: ### CloudMQTT -[CloudMQTT](https://www.cloudmqtt.com) is a hosted private MQTT instance that is free for up to 10 connected devices. This is enough to get started with for example [OwnTracks](/integrations/device_tracker.owntracks/) and give you a taste of what is possible. +[CloudMQTT](https://www.cloudmqtt.com) is a hosted private MQTT instance that is free for up to 10 connected devices. This is enough to get started with for example [OwnTracks](/integrations/owntracks/) and give you a taste of what is possible.
Home Assistant is not affiliated with CloudMQTT nor will receive any kickbacks. From e13bae66c9db30d0854cc824f7653fcb691c1d64 Mon Sep 17 00:00:00 2001 From: scheric <38077357+scheric@users.noreply.github.com> Date: Sun, 6 Oct 2019 19:52:50 +0200 Subject: [PATCH 16/45] fix link in Configurator the source.. (#10640) the source of the demo integration --- source/_integrations/configurator.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index d300d0ef522..763a7e493d6 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -18,6 +18,6 @@ The configurator integration allows integrations to request information from the - Input fields can be defined with a description, and optional type - It will trigger a callback when the button is pressed -The Hue integration in [the demo](/demo) and Plex are implemented using the configurator. See [the source of the demo integration](https://github.com/home-assistant/home-assistant/tree/dev/homeassistant/integrations/demo) for a simple example. +The Hue integration in [the demo](/demo) and Plex are implemented using the configurator. See [the source of the demo integration](https://github.com/home-assistant/home-assistant/tree/dev/homeassistant/components/demo) for a simple example. See [the source](https://github.com/home-assistant/home-assistant/tree/dev/homeassistant/components/configurator) for more details on how to use the configurator integration. From 4194c4d141602c9a1d50fe84c890ebf3f88c6158 Mon Sep 17 00:00:00 2001 From: definitio <37266727+definitio@users.noreply.github.com> Date: Sun, 6 Oct 2019 22:08:52 +0400 Subject: [PATCH 17/45] Fix plural in titles (#10639) --- source/_integrations/light.markdown | 2 +- source/_integrations/switch.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index 5ac5d705140..0e623c64b0a 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -1,5 +1,5 @@ --- -title: "Lights" +title: "Light" description: "Instructions on how to setup your lights with Home Assistant." logo: home-assistant.png ha_category: diff --git a/source/_integrations/switch.markdown b/source/_integrations/switch.markdown index 762cfec9c80..bfddce7d1d4 100644 --- a/source/_integrations/switch.markdown +++ b/source/_integrations/switch.markdown @@ -1,5 +1,5 @@ --- -title: "Switches" +title: "Switch" description: "Instructions on how to set up your switches with Home Assistant." logo: home-assistant.png ha_category: From 8243ed01ca78b34029b5e2c86561d991713fd68d Mon Sep 17 00:00:00 2001 From: Malachi Soord Date: Sun, 6 Oct 2019 22:46:52 +0200 Subject: [PATCH 18/45] Update google_maps.markdown (#10641) Provide additional information to track devices through this integration. --- source/_integrations/google_maps.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index 2b8878a693d..becbbfc9b0a 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -28,6 +28,10 @@ device_tracker: username: YOUR_USERNAME ``` +Once enabled and you have rebooted devices discovered through this integration wil be listed in the `known_devices.yaml`file within your configuration directory. + +They will be created with indentifiers like `google_maps_`. To be able to properly track entities you must set the `track` attribute to `true`. + {% configuration %} username: description: The email address for the Google account that has access to your shared location. From 67b99f6577666c94b26d53b1bebd9a2ebf527a34 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Sun, 6 Oct 2019 23:10:31 +0200 Subject: [PATCH 19/45] =?UTF-8?q?=F0=9F=94=97=20Fix=20broken=20links=20(pa?= =?UTF-8?q?rt=207)=20(#10636)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...-smart-plugs-and-neurio-energy-sensors.markdown | 3 +-- source/_posts/2016-05-21-release-020.markdown | 3 +-- ...016-09-29-async-sleepiq-emoncms-stocks.markdown | 2 +- .../2017-01-14-iss-usps-images-packages.markdown | 2 +- ...5-20-automation-editor-zwave-panel-ocr.markdown | 4 ++-- source/_posts/2017-06-04-release-46.markdown | 5 ++--- source/_posts/2017-07-02-release-48.markdown | 4 ++-- source/_posts/2017-08-12-release-51.markdown | 2 +- source/_posts/2017-08-26-release-0-52.markdown | 2 +- source/_posts/2017-09-09-release-53.markdown | 2 +- source/_posts/2017-10-07-release-55.markdown | 2 +- source/_posts/2017-11-04-release-57.markdown | 3 +-- source/_posts/2018-01-14-release-61.markdown | 4 ++-- source/_posts/2018-02-10-release-63.markdown | 14 ++++---------- source/_posts/2018-03-09-release-65.markdown | 8 ++++---- source/_posts/2018-04-14-release-67.markdown | 8 +++----- source/_posts/2018-05-11-release-69.markdown | 6 +++--- source/_posts/2018-05-18-release-70.markdown | 2 +- source/_posts/2018-06-22-release-72.markdown | 4 ++-- source/_posts/2018-07-06-release-73.markdown | 2 +- source/_posts/2018-07-16-release-73-2.markdown | 2 +- source/_posts/2018-07-21-release-74.markdown | 2 +- source/_posts/2018-08-03-release-75.markdown | 8 ++++---- source/_posts/2018-08-29-release-77.markdown | 4 ++-- source/_posts/2018-10-12-release-80.markdown | 4 ++-- source/_posts/2018-11-28-release-83.markdown | 11 +++++------ source/_posts/2019-01-09-release-85.markdown | 3 +-- source/_posts/2019-02-20-release-88.markdown | 7 +++---- source/_posts/2019-04-24-release-92.markdown | 4 ++-- source/_posts/2019-08-28-release-98.markdown | 1 - 30 files changed, 56 insertions(+), 72 deletions(-) diff --git a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown index 1c1b72e2180..1f263841b77 100644 --- a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown +++ b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown @@ -30,7 +30,7 @@ It's been another two weeks which means it's time for release: 0.14! - Switch: [D-Link smart plugs] now supported ([@LinuxChristian]) - Script: Toggle support added ([@Andythigpen]) - Light: [Wemo] now supported ([@jaharkes]) - - Rollershutter: [Command line platform][rollershutter.command_line] added ([@t30]) + - Rollershutter: Command line platform added ([@t30]) - Sensor: [Steam] now supported ([@GreenTurtwig]) - Binary Sensor: [Wink] now supported ([@w1ll1am23]) - Demo has been updated ([@kfgoode]) @@ -64,7 +64,6 @@ It's been another two weeks which means it's time for release: 0.14! [Z-Wave]: /integrations/zwave [D-Link smart plugs]: /integrations/dlink [Wemo]: /integrations/wemo -[rollershutter.command_line]: /integrations/rollershutter.command_line/ [Steam]: /integrations/steam_online [Wink]: /integrations/wink#binary-sensor [the cookbook]: /cookbook/python_component_simple_alarm/ diff --git a/source/_posts/2016-05-21-release-020.markdown b/source/_posts/2016-05-21-release-020.markdown index 99be1e3bac1..21b3319391f 100644 --- a/source/_posts/2016-05-21-release-020.markdown +++ b/source/_posts/2016-05-21-release-020.markdown @@ -25,7 +25,7 @@ Tons of new supported things in 0.20. - Configurator: allow supplying a link to the user ([@mnestor]) - Media Player: [Roku] now supported ([@bah2830]) - Sensor: [Last.fm] now supported ([@darookee], [@GreenTurtwig]) -- Notify: Amazon Lambda, [SNS], [SQS] now supported ([@robbiet480]) +- Notify: Amazon Lambda, [SNS], SQS now supported ([@robbiet480]) - Light: allow human readable colors in turn_on command ([@robbiet480]) - YAML: new include dir options [`!include_dir_merge_list`] and [`!include_dir_merge_named`] ([@happyleavesaoc]) - Media Player: [LG Netcast TVs] now supported ([@wokar]) @@ -76,7 +76,6 @@ device_tracker: [purge days option]: /integrations/recorder/ [Roku]: /integrations/roku#media-player [SNS]: /integrations/notify.aws_sns/ -[SQS]: /integrations/notify.aws_sqs/ [supervisord]: /integrations/supervisord [Twilio SMS]: /integrations/twilio_sms [Last.fm]: /integrations/lastfm diff --git a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown b/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown index 5f3fd8c27dc..c7e1047e04f 100644 --- a/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown +++ b/source/_posts/2016-09-29-async-sleepiq-emoncms-stocks.markdown @@ -170,7 +170,7 @@ Since 0.28 [automation rules](/blog/2016/09/10/notify-group-reload-api-pihole/#r [KNX]: /integrations/sensor.knx/ [Kodi]: /integrations/kodi [Modbus]: /integrations/modbus/ -[Nest]: /integrations/fan.nest/ +[Nest]: /integrations/nest/ [Nuimo]: /integrations/nuimo_controller/ [OpenALPR]: /integrations/openalpr_local_local [passwordless]: /integrations/http/ diff --git a/source/_posts/2017-01-14-iss-usps-images-packages.markdown b/source/_posts/2017-01-14-iss-usps-images-packages.markdown index 81d10d07d67..ed734c2b5d7 100644 --- a/source/_posts/2017-01-14-iss-usps-images-packages.markdown +++ b/source/_posts/2017-01-14-iss-usps-images-packages.markdown @@ -168,7 +168,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [facebook]: /integrations/facebook [image]: /integrations/image_processing/ [influx]: /integrations/influxdb/ -[insteon]: /integrations/insteon_local/ +[insteon]: /integrations/insteon/ [iss]: /integrations/iss [kankun]: /integrations/kankun [lannouncer]: /integrations/lannouncer diff --git a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown index 25731517f82..168a4a80dc4 100644 --- a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown +++ b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown @@ -364,8 +364,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [image_processing.dlib_face_identify docs]: /integrations/dlib_face_identify [image_processing.microsoft_face_detect docs]: /integrations/microsoft_face_detect [image_processing.microsoft_face_identify docs]: /integrations/microsoft_face_identify -[image_processing.openalpr_cloud docs]: /integrations/openalpr_local_cloud -[image_processing.openalpr_local docs]: /integrations/openalpr_local_local +[image_processing.openalpr_cloud docs]: /integrations/openalpr_cloud +[image_processing.openalpr_local docs]: /integrations/openalpr_local [image_processing.opencv docs]: /integrations/opencv [image_processing.seven_segments docs]: /integrations/seven_segments [kira docs]: /integrations/kira/ diff --git a/source/_posts/2017-06-04-release-46.markdown b/source/_posts/2017-06-04-release-46.markdown index 2d729a7e088..42b11dc9d2d 100644 --- a/source/_posts/2017-06-04-release-46.markdown +++ b/source/_posts/2017-06-04-release-46.markdown @@ -100,7 +100,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Always return rgb color of bulbs ([@w1ll1am23] - [#7743]) ([light.wink docs]) - Redesign monitored variables for hp_ilo sensor ([@Juggels] - [#7534]) ([sensor.hp_ilo docs]) (breaking change) - Fix time_date sensor to update at predictable intervals ([@stu-gott] - [#7644]) ([sensor.time_date docs]) -- Added new commands and functionality to the harmony remote component. ([@everix1992] - [#7113]) ([remote docs]) ([remote.harmony docs]) ([remote.services.yaml docs]) +- Added new commands and functionality to the harmony remote component. ([@everix1992] - [#7113]) ([remote docs]) ([remote.harmony docs]) (remote.services.yaml docs) - Template light ([@cribbstechnologies] - [#7657]) ([light.template docs]) (new-platform) - Exclude filter for event types ([@amigian74] - [#7627]) - Change setup script to use pip install instead of setup.py develop ([@hoh] - [#7756]) @@ -329,7 +329,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [hassio docs]: /integrations/hassio/ [homematic docs]: /integrations/homematic/ [image_processing.seven_segments docs]: /integrations/seven_segments -[insteon_local docs]: /integrations/insteon_local/ +[insteon_local docs]: /integrations/insteon/ [ios docs]: /integrations/ios/ [light.__init__ docs]: /integrations/light.__init__/ [light.flux_led docs]: /integrations/flux_led @@ -355,7 +355,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [recorder.__init__ docs]: /integrations/recorder.__init__/ [remote docs]: /integrations/remote/ [remote.harmony docs]: /integrations/harmony -[remote.services.yaml docs]: /integrations/remote.services.yaml/ [scene.hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview [sensor.amcrest docs]: /integrations/amcrest [sensor.arlo docs]: /integrations/arlo#sensor diff --git a/source/_posts/2017-07-02-release-48.markdown b/source/_posts/2017-07-02-release-48.markdown index dc3ec6883ae..c8eb2232a3c 100644 --- a/source/_posts/2017-07-02-release-48.markdown +++ b/source/_posts/2017-07-02-release-48.markdown @@ -448,12 +448,12 @@ light: [digital_ocean docs]: /integrations/digital_ocean/ [fan.comfoconnect docs]: /integrations/comfoconnect [fan.dyson docs]: /integrations/dyson#fan -[fan.insteon_local docs]: /integrations/insteon_local/ +[fan.insteon_local docs]: /integrations/insteon/ [group docs]: /integrations/group/ [image_processing.opencv docs]: /integrations/opencv [influxdb docs]: /integrations/influxdb/ [insteon_hub docs]: /integrations/insteon/ -[insteon_local docs]: /integrations/insteon_local/ +[insteon_local docs]: /integrations/insteon/ [knx docs]: /integrations/knx/ [light.decora docs]: /integrations/decora [light.isy994 docs]: /integrations/isy994 diff --git a/source/_posts/2017-08-12-release-51.markdown b/source/_posts/2017-08-12-release-51.markdown index a6ba4d72f04..76f8cd2fb65 100644 --- a/source/_posts/2017-08-12-release-51.markdown +++ b/source/_posts/2017-08-12-release-51.markdown @@ -376,7 +376,7 @@ vacuum: [history docs]: /integrations/history/ [image_processing.opencv docs]: /integrations/opencv [influxdb docs]: /integrations/influxdb/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light.decora_wifi docs]: /integrations/decora_wifi/ [light.flux_led docs]: /integrations/flux_led [light.lifx docs]: /integrations/lifx diff --git a/source/_posts/2017-08-26-release-0-52.markdown b/source/_posts/2017-08-26-release-0-52.markdown index 9c3015ca550..c652c8b9090 100644 --- a/source/_posts/2017-08-26-release-0-52.markdown +++ b/source/_posts/2017-08-26-release-0-52.markdown @@ -324,7 +324,7 @@ usps: [fan.isy994 docs]: /integrations/isy994 [image_processing.dlib_face_detect docs]: /integrations/dlib_face_detect [image_processing.dlib_face_identify docs]: /integrations/dlib_face_identify -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light.decora_wifi docs]: /integrations/decora_wifi/ [light.flux_led docs]: /integrations/flux_led [light.hue docs]: /integrations/hue diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown index a338fe77087..80dc891e302 100644 --- a/source/_posts/2017-09-09-release-53.markdown +++ b/source/_posts/2017-09-09-release-53.markdown @@ -385,7 +385,7 @@ frontend: [image_processing.dlib_face_detect docs]: /integrations/dlib_face_detect [image_processing.dlib_face_identify docs]: /integrations/dlib_face_identify [input_text docs]: /integrations/input_text/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light.homematic docs]: /integrations/homematic [light.hue docs]: /integrations/hue [light.lutron_caseta docs]: /integrations/lutron_caseta/ diff --git a/source/_posts/2017-10-07-release-55.markdown b/source/_posts/2017-10-07-release-55.markdown index adc6adc4ccf..1db919b9b96 100644 --- a/source/_posts/2017-10-07-release-55.markdown +++ b/source/_posts/2017-10-07-release-55.markdown @@ -321,7 +321,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [cover.rflink docs]: /integrations/cover.rflink/ [demo docs]: /integrations/demo/ [device_tracker.owntracks docs]: /integrations/owntracks -[device_tracker.owntracks_http docs]: /integrations/owntracks_http/ +[device_tracker.owntracks_http docs]: /integrations/owntracks [duckdns docs]: /integrations/duckdns/ [ecobee docs]: /integrations/ecobee/ [emulated_hue docs]: /integrations/emulated_hue/ diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown index 6346353164c..0ca7bae43dc 100644 --- a/source/_posts/2017-11-04-release-57.markdown +++ b/source/_posts/2017-11-04-release-57.markdown @@ -213,7 +213,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add Sytadin Traffic component ([@gautric] - [#9524]) ([sensor.sytadin docs]) (new-platform) - media_title property now returns current source ([@etsinko] - [#10120]) ([media_player.monoprice docs]) - Added new Clickatell SMS messaging Notify Platform ([@davlloyd] - [#9775]) ([notify.clickatell docs]) (new-platform) -- update boto3 to 1.4.7 and botocore to 1.7.34 ([@TopdRob] - [#10121]) (notify.aws_lambda docs) ([notify.aws_sns docs]) ([notify.aws_sqs docs]) ([tts.amazon_polly docs]) +- update boto3 to 1.4.7 and botocore to 1.7.34 ([@TopdRob] - [#10121]) (notify.aws_lambda docs) ([notify.aws_sns docs]) (notify.aws_sqs docs) ([tts.amazon_polly docs]) - Add Random binary sensor ([@fabaff] - [#10164]) ([binary_sensor.random docs]) (new-platform) - Add clickatell ([@fabaff] - [#10199]) - Update CODEOWNERS ([@ggravlingen] - [#10198]) @@ -587,7 +587,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [namecheapdns docs]: /integrations/namecheapdns/ [no_ip docs]: /integrations/no_ip/ [notify.aws_sns docs]: /integrations/notify.aws_sns/ -[notify.aws_sqs docs]: /integrations/notify.aws_sqs/ [notify.clickatell docs]: /integrations/clickatell [notify.sendgrid docs]: /integrations/sendgrid [notify.yessssms docs]: /integrations/yessssms diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown index aeb9d3abe23..64aaae1f4e4 100644 --- a/source/_posts/2018-01-14-release-61.markdown +++ b/source/_posts/2018-01-14-release-61.markdown @@ -666,7 +666,7 @@ Note however, that this feature was replaced by a new ignore_string config optio [device_tracker.snmp docs]: /integrations/snmp [device_tracker.tile docs]: /integrations/tile [digital_ocean docs]: /integrations/digital_ocean/ -[fan.insteon_local docs]: /integrations/insteon_local/ +[fan.insteon_local docs]: /integrations/insteon/ [fan.isy994 docs]: /integrations/isy994 [fan.xiaomi_miio docs]: /integrations/fan.xiaomi_miio/ [google_assistant docs]: /integrations/google_assistant/ @@ -681,7 +681,7 @@ Note however, that this feature was replaced by a new ignore_string config optio [image_processing.opencv docs]: /integrations/opencv [input_boolean docs]: /integrations/input_boolean/ [input_select docs]: /integrations/input_select/ -[insteon_local docs]: /integrations/insteon_local/ +[insteon_local docs]: /integrations/insteon/ [isy994 docs]: /integrations/isy994/ [knx docs]: /integrations/knx/ [light.deconz docs]: /integrations/deconz#light diff --git a/source/_posts/2018-02-10-release-63.markdown b/source/_posts/2018-02-10-release-63.markdown index 1182b2a81d3..fe695202524 100644 --- a/source/_posts/2018-02-10-release-63.markdown +++ b/source/_posts/2018-02-10-release-63.markdown @@ -51,7 +51,7 @@ We're planning a lot of cool stuff around the entity registry. Stay tuned! ## Release 0.63.2 - February 14 -- Fix MercedesMe - add check for unsupported features ([@ReneNulschDE] - [#12342]) ([mercedesme docs]) (binary_sensor.mercedesme docs) ([device_tracker.mercedesme docs]) ([sensor.mercedesme docs]) +- Fix MercedesMe - add check for unsupported features ([@ReneNulschDE] - [#12342]) (mercedesme docs) (binary_sensor.mercedesme docs) (device_tracker.mercedesme docs) (sensor.mercedesme docs) - Fix WUnderground names ([@OttoWinter] - [#12346]) ([sensor.wunderground docs]) - Updated beacontools ([@citruz] - [#12368]) ([sensor.eddystone_temperature docs]) - Introduce zone_id to identify player+zone ([@sdague] - [#12382]) ([media_player.yamaha docs]) @@ -226,7 +226,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Canary live stream ([@snjoetw] - [#11949]) ([canary docs]) ([camera.canary docs]) (breaking change) - Replace Gitter with Discord ([@fabaff] - [#12199]) - Upgrade Sphinx to 1.6.7 ([@fabaff] - [#12200]) -- Change attributes in new Mercedes Me component ([@ReneNulschDE] - [#12147]) ([mercedesme docs]) (binary_sensor.mercedesme docs) ([device_tracker.mercedesme docs]) ([sensor.mercedesme docs]) +- Change attributes in new Mercedes Me component ([@ReneNulschDE] - [#12147]) (mercedesme docs) (binary_sensor.mercedesme docs) (device_tracker.mercedesme docs) (sensor.mercedesme docs) - Binary Sensor Template: Add icon_template and entity_picture_template support ([@hawk259] - [#12158]) ([binary_sensor.template docs]) - Bump pyeconet version to fix JSONDecodeError ([@w1ll1am23] - [#12204]) ([climate.econet docs]) - Add support for Alexa.StepSpeaker ([@lucasweb78] - [#12183]) ([alexa docs]) @@ -528,7 +528,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [cover.template docs]: /integrations/cover.template/ [deconz docs]: /integrations/deconz/ [device_tracker.huawei_router docs]: /integrations/huawei_router -[device_tracker.mercedesme docs]: /integrations/device_tracker.mercedesme/ [device_tracker.mikrotik docs]: /integrations/mikrotik [device_tracker.mqtt docs]: /integrations/device_tracker.mqtt/ [device_tracker.owntracks docs]: /integrations/owntracks @@ -543,7 +542,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [group docs]: /integrations/group/ [homematic docs]: /integrations/homematic/ [http docs]: /integrations/http/ -[image_processing.openalpr_cloud docs]: /integrations/openalpr_local_cloud +[image_processing.openalpr_cloud docs]: /integrations/openalpr_cloud [influxdb docs]: /integrations/influxdb/ [input_text docs]: /integrations/input_text/ [ios docs]: /integrations/ios/ @@ -572,7 +571,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.volumio docs]: /integrations/volumio [media_player.webostv docs]: /integrations/webostv#media-player [melissa docs]: /integrations/melissa/ -[mercedesme docs]: /integrations/mercedesme/ [mochad docs]: /integrations/mochad/ [notify.gntp docs]: /integrations/gntp [notify.kodi docs]: /integrations/kodi @@ -592,7 +590,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.deutsche_bahn docs]: /integrations/deutsche_bahn [sensor.fritzbox_callmonitor docs]: /integrations/fritzbox#sensor_callmonitor/ [sensor.melissa docs]: /integrations/melissa/ -[sensor.mercedesme docs]: /integrations/sensor.mercedesme/ [sensor.miflora docs]: /integrations/miflora [sensor.onewire docs]: /integrations/onewire [sensor.pollen docs]: /integrations/iqvia @@ -653,12 +650,9 @@ Experiencing issues introduced by this release? Please report them in our [issue [@amelchio]: https://github.com/amelchio [@citruz]: https://github.com/citruz [@sdague]: https://github.com/sdague -[device_tracker.mercedesme docs]: /integrations/device_tracker.mercedesme/ [light.limitlessled docs]: /integrations/limitlessled -[media_player.yamaha docs]: /integrations/yamaha -[mercedesme docs]: /integrations/mercedesme/ +[media_player.yamaha docs]: /integrations/yamah [sensor.eddystone_temperature docs]: /integrations/eddystone_temperature -[sensor.mercedesme docs]: /integrations/sensor.mercedesme/ [sensor.wunderground docs]: /integrations/wunderground [#12392]: https://github.com/home-assistant/home-assistant/pull/12392 [#12421]: https://github.com/home-assistant/home-assistant/pull/12421 diff --git a/source/_posts/2018-03-09-release-65.markdown b/source/_posts/2018-03-09-release-65.markdown index cf971dc800e..1c76851490c 100644 --- a/source/_posts/2018-03-09-release-65.markdown +++ b/source/_posts/2018-03-09-release-65.markdown @@ -178,7 +178,7 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes -- Insteon PLM: If you have created platform overrides in your configuration.yaml file to change a your INSTEON device to map to a different Home Assistant platform, that mapping will no longer be in effect. Please see the new device override capabilities in the [insteon_plm documentation](/integrations/insteon_plm/). ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change) +- Insteon PLM: If you have created platform overrides in your configuration.yaml file to change a your INSTEON device to map to a different Home Assistant platform, that mapping will no longer be in effect. Please see the new device override capabilities in the [insteon_plm documentation](/integrations/insteon/). ([@teharris1] - [#12534]) ([insteon_plm docs]) ([binary_sensor.insteon_plm docs]) ([fan.insteon_plm docs]) ([light.insteon_plm docs]) ([sensor.insteon_plm docs]) ([switch.insteon_plm docs]) (breaking change) - AirVisual's air index unit is AQI (Air Quality Index), not PSI (Pressure per Square Inch). ([@chilicheech] - [#12730]) ([sensor.airvisual docs]) (breaking change) - TekSavvy Sensor: The sensor entity id for peak upload usage used to be `sensor.teksavvy_on_peak_upload_` this has been changed to `sensor.teksavvy_on_peak_upload`. The `usage` title was shared between and therefore indeterminate between GB and % usage. Therefore % usage entity ID has been changed to `sensor.teksavvy_usage_ratio` ([@mikeodr] - [#12325]) ([sensor.teksavvy docs]) (breaking change) - Egardia redesign - generic component and sensor support ([@jeroenterheerdt] - [#11994]) ([egardia docs]) ([alarm_control_panel.egardia docs]) ([binary_sensor.egardia docs]) (breaking change) (new-platform) @@ -549,7 +549,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [binary_sensor.concord232 docs]: /integrations/concord232#binary-sensor [binary_sensor.egardia docs]: /integrations/egardia#binary-sensor [binary_sensor.hikvision docs]: /integrations/hikvision -[binary_sensor.insteon_plm docs]: /integrations/insteon_plm/ +[binary_sensor.insteon_plm docs]: /integrations/insteon/ [binary_sensor.isy994 docs]: /integrations/isy994 [binary_sensor.knx docs]: /integrations/binary_sensor.knx/ [binary_sensor.upcloud docs]: /integrations/upcloud#binary-sensor @@ -582,7 +582,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [hue docs]: /integrations/hue/ [ihc docs]: /integrations/ihc/ [influxdb docs]: /integrations/influxdb/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [knx docs]: /integrations/knx/ [light docs]: /integrations/light/ [light.demo docs]: /integrations/light.demo/ @@ -636,7 +636,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.zestimate docs]: /integrations/zestimate [shopping_list docs]: /integrations/shopping_list/ [switch.edimax docs]: /integrations/edimax -[switch.insteon_plm docs]: /integrations/insteon_plm/ +[switch.insteon_plm docs]: /integrations/insteon/ [switch.rest docs]: /integrations/switch.rest/ [switch.tesla docs]: /integrations/tesla [switch.upcloud docs]: /integrations/upcloud#switch diff --git a/source/_posts/2018-04-14-release-67.markdown b/source/_posts/2018-04-14-release-67.markdown index ce2c50e55bc..6dc2a8690c7 100644 --- a/source/_posts/2018-04-14-release-67.markdown +++ b/source/_posts/2018-04-14-release-67.markdown @@ -56,7 +56,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Updates default Pilight port number ([@frenck] - [#13419]) ([pilight docs]) (breaking change) - Update to new "b2vapi" of BMW ConnectedDrive ([@ChristianKuehnel] - [#13305]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs]) ([lock.bmw_connected_drive docs]) ([sensor.bmw_connected_drive docs]) (breaking change) -- Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) ([mercedesme docs]) (binary_sensor.mercedesme docs) ([sensor.mercedesme docs]) (breaking change) +- Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) (mercedesme docs) (binary_sensor.mercedesme docs) (sensor.mercedesme docs) (breaking change) - Channel up and down for webostv ([@stephanerosi] - [#13624]) ([media_player.webostv docs]) (breaking change) - Add media type separation for video/movie ([@tadly] - [#13612]) (breaking change) - Added ENTITY_ID_FORMAT import and set entity_id in __init__ ([@timmo001] - [#13642]) ([switch.broadlink docs]) (breaking change) @@ -108,7 +108,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Added HassOpenCover and HassCloseCover intents ([@tschmidty69] - [#13372]) ([conversation docs]) ([cover docs]) - rfxtrx lib 0.22.0 ([@Danielhiversen] - [#13576]) ([rfxtrx docs]) - xiaomi lib upgrade ([@Danielhiversen] - [#13577]) ([xiaomi_aqara docs]) -- Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) ([mercedesme docs]) (binary_sensor.mercedesme docs) ([sensor.mercedesme docs]) (breaking change) +- Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) (mercedesme docs) (binary_sensor.mercedesme docs) (sensor.mercedesme docs) (breaking change) - Added Waze travel time sensor ([@Myrddyn1] - [#12387]) ([sensor.waze_travel_time docs]) (new-platform) - Added switch component to Amcrest IP Camera. ([@adpriebe] - [#12992]) ([amcrest docs]) ([switch.amcrest docs]) (new-platform) - Upgrade pyhydroquebec 2.2.1 ([@titilambert] - [#13586]) ([sensor.hydroquebec docs]) @@ -354,7 +354,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [freedns docs]: /integrations/freedns/ [homekit docs]: /integrations/homekit/ [hue docs]: /integrations/hue/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light docs]: /integrations/light/ [light.nanoleaf_aurora docs]: /integrations/nanoleaf/ [light.hue docs]: /integrations/hue @@ -371,7 +371,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.philips_js docs]: /integrations/philips_js [media_player.songpal docs]: /integrations/songpal [media_player.webostv docs]: /integrations/webostv#media-player -[mercedesme docs]: /integrations/mercedesme/ [mqtt docs]: /integrations/mqtt/ [mysensors docs]: /integrations/mysensors/ [notify docs]: /integrations/notify/ @@ -387,7 +386,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.file docs]: /integrations/file#sensor [sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.imap_email_content docs]: /integrations/imap_email_content/ -[sensor.mercedesme docs]: /integrations/sensor.mercedesme/ [sensor.plex docs]: /integrations/plex#sensor [sensor.qnap docs]: /integrations/qnap [sensor.qwikswitch docs]: /integrations/qwikswitch diff --git a/source/_posts/2018-05-11-release-69.markdown b/source/_posts/2018-05-11-release-69.markdown index 24e1152ffe2..a6e3e3207e4 100644 --- a/source/_posts/2018-05-11-release-69.markdown +++ b/source/_posts/2018-05-11-release-69.markdown @@ -376,7 +376,7 @@ rainmachine: [auth docs]: /integrations/auth/ [binary_sensor docs]: /integrations/binary_sensor/ [binary_sensor.deconz docs]: /integrations/deconz#binary-sensor -[binary_sensor.insteon_plm docs]: /integrations/insteon_plm/ +[binary_sensor.insteon_plm docs]: /integrations/insteon/ [binary_sensor.tapsaff docs]: /integrations/tapsaff [binary_sensor.trend docs]: /integrations/trend [binary_sensor.workday docs]: /integrations/workday @@ -405,7 +405,7 @@ rainmachine: [image_processing.microsoft_face_identify docs]: /integrations/microsoft_face_identify [image_processing.opencv docs]: /integrations/opencv [influxdb docs]: /integrations/influxdb/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light.deconz docs]: /integrations/deconz#light [light.flux_led docs]: /integrations/flux_led [light.hue docs]: /integrations/hue @@ -466,7 +466,7 @@ rainmachine: [sensor.yweather docs]: /integrations/yweather [switch.deluge docs]: /integrations/deluge#switch [switch.fritzbox docs]: /integrations/fritzbox -[switch.insteon_plm docs]: /integrations/insteon_plm/ +[switch.insteon_plm docs]: /integrations/insteon/ [switch.mqtt docs]: /integrations/switch.mqtt/ [switch.rainmachine docs]: /integrations/rainmachine#switch [switch.xiaomi_aqara docs]: /integrations/switch.xiaomi_aqara/ diff --git a/source/_posts/2018-05-18-release-70.markdown b/source/_posts/2018-05-18-release-70.markdown index a3a8c75489f..6e05762d28c 100644 --- a/source/_posts/2018-05-18-release-70.markdown +++ b/source/_posts/2018-05-18-release-70.markdown @@ -379,7 +379,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [homematicip_cloud docs]: /integrations/homematicip_cloud/ [http docs]: /integrations/http/ [image_processing.facebox docs]: /integrations/facebox -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [iota docs]: /integrations/iota/ [isy994 docs]: /integrations/isy994/ [konnected docs]: /integrations/konnected/ diff --git a/source/_posts/2018-06-22-release-72.markdown b/source/_posts/2018-06-22-release-72.markdown index 80140475db8..535e0dddd2e 100644 --- a/source/_posts/2018-06-22-release-72.markdown +++ b/source/_posts/2018-06-22-release-72.markdown @@ -426,7 +426,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [hassio docs]: /integrations/hassio/ [hue docs]: /integrations/hue/ [image_processing.facebox docs]: /integrations/facebox -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [konnected docs]: /integrations/konnected/ [light.deconz docs]: /integrations/deconz#light [light.lifx docs]: /integrations/lifx @@ -485,7 +485,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.xiaomi_miio docs]: /integrations/sensor.xiaomi_miio/ [sonos docs]: /integrations/sonos/ [switch.doorbird docs]: /integrations/doorbird#switch -[switch.insteon_plm docs]: /integrations/insteon_plm/ +[switch.insteon_plm docs]: /integrations/insteon/ [switch.linode docs]: /integrations/linode#switch [switch.mystrom docs]: /integrations/mystrom#switch [switch.neato docs]: /integrations/neato#switch diff --git a/source/_posts/2018-07-06-release-73.markdown b/source/_posts/2018-07-06-release-73.markdown index e503bc74362..6f7e88313b5 100644 --- a/source/_posts/2018-07-06-release-73.markdown +++ b/source/_posts/2018-07-06-release-73.markdown @@ -288,7 +288,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [http docs]: /integrations/http/ [hue docs]: /integrations/hue/ [image_processing.opencv docs]: /integrations/opencv -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light.deconz docs]: /integrations/deconz#light [light.flux_led docs]: /integrations/flux_led [light.homekit_controller docs]: /integrations/homekit_controller diff --git a/source/_posts/2018-07-16-release-73-2.markdown b/source/_posts/2018-07-16-release-73-2.markdown index 915455d8481..90d8a8de1bd 100644 --- a/source/_posts/2018-07-16-release-73-2.markdown +++ b/source/_posts/2018-07-16-release-73-2.markdown @@ -23,7 +23,7 @@ After research, the following integrations have been impacted. Although the odds - [google_assistant](/integrations/google_assistant/) (manual setup) - [google_domains](/integrations/google_domains/) - [homematicip_cloud](/integrations/homematicip_cloud/) -- [image_processing.openalpr_cloud](/integrations/openalpr_local_cloud) +- [image_processing.openalpr_cloud](/integrations/openalpr_cloud) - [microsoft_face](/integrations/microsoft_face/) - [namecheapdns](/integrations/namecheapdns/) - [no_ip](/integrations/no_ip/) diff --git a/source/_posts/2018-07-21-release-74.markdown b/source/_posts/2018-07-21-release-74.markdown index e4dd8c0f426..0e401457e72 100644 --- a/source/_posts/2018-07-21-release-74.markdown +++ b/source/_posts/2018-07-21-release-74.markdown @@ -397,7 +397,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [switch.enocean docs]: /integrations/enocean#switch [switch.eufy docs]: /integrations/eufy [switch.fritzbox docs]: /integrations/fritzbox -[switch.insteon_plm docs]: /integrations/insteon_plm/ +[switch.insteon_plm docs]: /integrations/insteon/ [switch.tuya docs]: /integrations/tuya [tahoma docs]: /integrations/tahoma/ [tts docs]: /integrations/tts/ diff --git a/source/_posts/2018-08-03-release-75.markdown b/source/_posts/2018-08-03-release-75.markdown index 088097ae572..cf3f8c2e08a 100644 --- a/source/_posts/2018-08-03-release-75.markdown +++ b/source/_posts/2018-08-03-release-75.markdown @@ -313,7 +313,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [auth docs]: /integrations/auth/ [binary_sensor.alarmdecoder docs]: /integrations/alarmdecoder [binary_sensor.ihc docs]: /integrations/ihc#binary-sensor -[binary_sensor.insteon_plm docs]: /integrations/insteon_plm/ +[binary_sensor.insteon_plm docs]: /integrations/insteon/ [binary_sensor.tahoma docs]: /integrations/tahoma [binary_sensor.trend docs]: /integrations/trend [calendar.todoist docs]: /integrations/todoist @@ -335,7 +335,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [fan docs]: /integrations/fan/ [fan.comfoconnect docs]: /integrations/comfoconnect [fan.dyson docs]: /integrations/dyson#fan -[fan.insteon_local docs]: /integrations/insteon_local/ +[fan.insteon_local docs]: /integrations/insteon/ [fan.template docs]: /integrations/fan.template/ [fan.tuya docs]: /integrations/tuya [fan.wink docs]: /integrations/wink#fan @@ -347,7 +347,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [http docs]: /integrations/http/ [ihc docs]: /integrations/ihc/ [image_processing.opencv docs]: /integrations/opencv -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_plm docs]: /integrations/insteon/ [light docs]: /integrations/light/ [light.deconz docs]: /integrations/deconz#light [light.futurenow docs]: /integrations/futurenow @@ -398,7 +398,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [spider docs]: /integrations/spider/ [switch docs]: /integrations/switch/ [switch.ihc docs]: /integrations/ihc#switch -[switch.insteon_plm docs]: /integrations/insteon_plm/ +[switch.insteon_plm docs]: /integrations/insteon/ [switch.mqtt docs]: /integrations/switch.mqtt/ [switch.spider docs]: /integrations/spider [switch.tplink docs]: /integrations/tplink diff --git a/source/_posts/2018-08-29-release-77.markdown b/source/_posts/2018-08-29-release-77.markdown index 8fe6fffb297..692fd0d74e3 100644 --- a/source/_posts/2018-08-29-release-77.markdown +++ b/source/_posts/2018-08-29-release-77.markdown @@ -448,8 +448,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [http docs]: /integrations/http/ [image_processing.opencv docs]: /integrations/opencv [input_datetime docs]: /integrations/input_datetime/ -[insteon_local docs]: /integrations/insteon_local/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_local docs]: /integrations/insteon/ +[insteon_plm docs]: /integrations/insteon/ [konnected docs]: /integrations/konnected/ [light.deconz docs]: /integrations/deconz#light [light.wemo docs]: /integrations/wemo diff --git a/source/_posts/2018-10-12-release-80.markdown b/source/_posts/2018-10-12-release-80.markdown index 0e20cebb9b6..4351081033e 100644 --- a/source/_posts/2018-10-12-release-80.markdown +++ b/source/_posts/2018-10-12-release-80.markdown @@ -600,8 +600,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [automation.webhook docs]: /docs/automation/trigger/#webhook-trigger [binary_sensor.blink docs]: /integrations/blink [binary_sensor.bmw_connected_drive docs]: /integrations/bmw_connected_drive -[binary_sensor.ffmpeg_motion docs]: /integrations/ffmpeg_motion_motion/ -[binary_sensor.ffmpeg_noise docs]: /integrations/ffmpeg_motion_noise/ +[binary_sensor.ffmpeg_motion docs]: /integrations/ffmpeg_motion/ +[binary_sensor.ffmpeg_noise docs]: /integrations/ffmpeg_noise/ [binary_sensor.fritzbox docs]: /integrations/fritzbox [binary_sensor.mqtt docs]: /integrations/binary_sensor.mqtt/ [binary_sensor.openuv docs]: /integrations/openuv diff --git a/source/_posts/2018-11-28-release-83.markdown b/source/_posts/2018-11-28-release-83.markdown index 8fd672c6723..eb8198d2c23 100644 --- a/source/_posts/2018-11-28-release-83.markdown +++ b/source/_posts/2018-11-28-release-83.markdown @@ -38,7 +38,7 @@ Note, this release includes a migration to add an index to speed up the logbook - Implemented tplink_lte components and notify service via SMS ([@andtos90] - [#17111]) ([notify docs]) ([tplink_lte docs]) (new-platform) - Add Traccar device tracker ([@ludeeus] - [#18200]) ([device_tracker docs]) (new-platform) - Add support for Google Home device tracking ([@ludeeus] - [#18190]) ([device_tracker docs]) (new-platform) -- Add Norwegian Public Transportation sensor (Ruter). ([@ludeeus] - [#18237]) ([sensor.ruter docs]) (new-platform) +- Add Norwegian Public Transportation sensor (Ruter). ([@ludeeus] - [#18237]) (sensor.ruter docs) (new-platform) - Split out geofency with a component and platform. The geofency device_tracker platform no longer takes any configuration. The configuration needs to be applied to the component geofency instead. The platform will be automatically loaded with the component. ([@rohankapoorcom] - [#17933]) ([device_tracker docs]) ([geofency docs]) (breaking change) (new-platform) - Add support for Lupusec alarm control panel ([@majuss] - [#17691]) ([lupusec docs]) ([alarm_control_panel.lupusec docs]) ([binary_sensor.lupusec docs]) ([switch.lupusec docs]) (new-platform) - Add upload and download sensors and component for asuswrt ([@kennedyshead] - [#17757]) ([asuswrt docs]) ([device_tracker docs]) ([sensor.asuswrt docs]) (breaking change) (new-platform) @@ -181,7 +181,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - fixed wording that may confuse user ([@eliseomartelli] - [#18628]) (beta fix) - Updated webhook_register, version bump pypoint ([@fredrike] - [#18635]) ([point docs]) (beta fix) - Fix vol Dict -> dict ([@bramkragten] - [#18637]) ([lovelace docs]) (beta fix) -- Set correct default offset ([@ludeeus] - [#18678]) ([sensor.ruter docs]) (beta fix) +- Set correct default offset ([@ludeeus] - [#18678]) (sensor.ruter docs) (beta fix) - Add permission checks to Rest API ([@balloob] - [#18639]) ([api docs]) ([http docs]) (beta fix) - Fix logbook filtering entities ([@balloob] - [#18721]) ([logbook docs]) (beta fix) - Async tests for owntracks device tracker ([@armills] - [#18681]) (beta fix) @@ -252,7 +252,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Normalize MAC addresses ([@balloob] - [#16916]) - HmIP thermostat fix with operations ([@pvizeli] - [#18068]) ([climate.homematic docs]) - Update PR checklist with commented out code check ([@armills] - [#18272]) -- Add Norwegian Public Transportation sensor (Ruter). ([@ludeeus] - [#18237]) ([sensor.ruter docs]) (new-platform) +- Add Norwegian Public Transportation sensor (Ruter). ([@ludeeus] - [#18237]) (sensor.ruter docs) (new-platform) - Split out geofency with a component and platform ([@rohankapoorcom] - [#17933]) ([device_tracker docs]) ([geofency docs]) (breaking change) (new-platform) - Use async_add_executor_job at the xiaomi_miio platforms ([@syssi] - [#18294]) ([device_tracker docs]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([remote.xiaomi_miio docs]) ([sensor.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) - Remove skipped device tracker tests ([@armills] - [#18291]) @@ -265,7 +265,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Upgrade hdate to 0.7.5 ([@tsvi] - [#18296]) ([sensor.jewish_calendar docs]) - Add SUPPORT_SEEK for DLNA DMR devices + now (better) providing media_image_url for DLNA DMR devices ([@StevenLooman] - [#18157]) ([upnp docs]) ([media_player.dlna_dmr docs]) - Add upload and download sensors and component for asuswrt ([@kennedyshead] - [#17757]) ([asuswrt docs]) ([device_tracker docs]) ([sensor.asuswrt docs]) (breaking change) (new-platform) -- Update pyruter to 1.1.0 to be able to reuse aiohttp session. ([@ludeeus] - [#18310]) ([sensor.ruter docs]) +- Update pyruter to 1.1.0 to be able to reuse aiohttp session. ([@ludeeus] - [#18310]) (sensor.ruter docs) - Make flux switch async ([@jawilson] - [#18277]) ([switch.flux docs]) - Add support for 17track.net package sensors ([@bachya] - [#18038]) ([sensor.seventeentrack docs]) (new-platform) - Added optional precision configuration option to generic_thermostat. ([@partofthething] - [#18317]) ([climate.generic_thermostat docs]) @@ -380,7 +380,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - fixed wording that may confuse user ([@eliseomartelli] - [#18628]) (beta fix) - Updated webhook_register, version bump pypoint ([@fredrike] - [#18635]) ([point docs]) (beta fix) - Fix vol Dict -> dict ([@bramkragten] - [#18637]) ([lovelace docs]) (beta fix) -- Set correct default offset ([@ludeeus] - [#18678]) ([sensor.ruter docs]) (beta fix) +- Set correct default offset ([@ludeeus] - [#18678]) (sensor.ruter docs) (beta fix) - Add permission checks to Rest API ([@balloob] - [#18639]) ([api docs]) ([http docs]) (beta fix) - Fix logbook filtering entities ([@balloob] - [#18721]) ([logbook docs]) (beta fix) - Async tests for owntracks device tracker ([@armills] - [#18681]) (beta fix) @@ -781,7 +781,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.point docs]: /integrations/point#sensor [sensor.pollen docs]: /integrations/iqvia [sensor.rainmachine docs]: /integrations/rainmachine -[sensor.ruter docs]: /integrations/sensor.ruter/ [sensor.season docs]: /integrations/season [sensor.seventeentrack docs]: /integrations/seventeentrack [sensor.sql docs]: /integrations/sql diff --git a/source/_posts/2019-01-09-release-85.markdown b/source/_posts/2019-01-09-release-85.markdown index c88540318fe..4c9e9ff3854 100644 --- a/source/_posts/2019-01-09-release-85.markdown +++ b/source/_posts/2019-01-09-release-85.markdown @@ -245,7 +245,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Clean up RFLink tests and add two tests ([@javicalle] - [#19511]) - Add ZHA battery sensor ([@dmulcahey] - [#19363]) ([zha docs]) ([sensor.zha docs]) - Restore state for zha binary_sensors on restart. ([@Adminiuga] - [#19314]) ([binary_sensor.zha docs]) -- Add deprecation warning ([@ludeeus] - [#19515]) ([sensor.ruter docs]) +- Add deprecation warning ([@ludeeus] - [#19515]) (sensor.ruter docs) - Update yale smart alarm client to v0.1.6 ([@domwillcode] - [#19495]) ([alarm_control_panel.yale_smart_alarm docs]) - Add sunrise and sunset to Darksky weather sensor ([@fabaff] - [#19492]) ([sensor.darksky docs]) - Update ZHA entity state on ZigBee zdo device announce ([@dmulcahey] - [#19208]) ([zha docs]) @@ -864,7 +864,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.plum_lightpad docs]: /integrations/plum_lightpad [sensor.point docs]: /integrations/point#sensor [sensor.prezzibenzina docs]: /integrations/prezzibenzina -[sensor.ruter docs]: /integrations/sensor.ruter/ [sensor.scrape docs]: /integrations/scrape [sensor.seventeentrack docs]: /integrations/seventeentrack [sensor.solaredge docs]: /integrations/solaredge diff --git a/source/_posts/2019-02-20-release-88.markdown b/source/_posts/2019-02-20-release-88.markdown index da58c0cfc5d..7c676456642 100644 --- a/source/_posts/2019-02-20-release-88.markdown +++ b/source/_posts/2019-02-20-release-88.markdown @@ -206,13 +206,13 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add ZHA binary sensor tests ([@dmulcahey] - [#20711]) - Add ZHA fan tests ([@dmulcahey] - [#20712]) - Add ZHA light tests ([@dmulcahey] - [#20713]) -- Add google home alarm sensor ([@eliseomartelli] - [#20709]) ([googlehome docs]) (new-platform) +- Add google home alarm sensor ([@eliseomartelli] - [#20709]) (googlehome docs) (new-platform) - Add missing abbreviations ([@emontnemery] - [#20741]) ([mqtt docs]) - Update pysmartthings to 0.5.0 ([@andrewsayre] - [#20759]) ([smartthings docs]) - Use PLATFORM_SCHEMA_BASE as base schema for additional components. ([@emontnemery] - [#20578]) (breaking change) - Update flake8 to 3.7.5 ([@Danielhiversen] - [#20761]) ([cast docs]) ([device_tracker docs]) ([isy994 docs]) - Modifying MTUs acquisition ([@SupremeSports] - [#20654]) ([sensor.ted5000 docs]) -- Fix googlehome alarm sensor platform ([@eliseomartelli] - [#20742]) ([googlehome docs]) +- Fix googlehome alarm sensor platform ([@eliseomartelli] - [#20742]) (googlehome docs) - SMHI component: Bugfix - calc precipitation ([@helto4real] - [#20745]) ([smhi docs]) - Added HomeKit fan speed based on speed_list ([@nd-net] - [#19767]) ([homekit docs]) (new-feature) - Reproduce states by letting each component opt in on handling state recovery itself ([@elupus] - [#18700]) @@ -649,7 +649,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [feedreader docs]: /integrations/feedreader/ [freedns docs]: /integrations/freedns/ [google_pubsub docs]: /integrations/google_pubsub/ -[googlehome docs]: /integrations/googlehome/ [harmony docs]: /integrations/harmony/ [homekit docs]: /integrations/homekit/ [homematic docs]: /integrations/homematic/ @@ -700,7 +699,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.modbus docs]: /integrations/sensor.modbus/ [sensor.rejseplanen docs]: /integrations/rejseplanen [sensor.speedtest docs]: /integrations/speedtestdotnet -[sensor.speedtestdotnet docs]: /integrations/speedtestdotnetdotnet/ +[sensor.speedtestdotnet docs]: /integrations/speedtestdotnet [sensor.sql docs]: /integrations/sql [sensor.ted5000 docs]: /integrations/ted5000 [sensor.thermoworks_smoke docs]: /integrations/thermoworks_smoke diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index 37c50ab549e..73dafc2baed 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -1027,8 +1027,8 @@ Experiencing issues introduced by this release? Please report them in our [issue [ifttt docs]: /integrations/ifttt/ [ign_sismologia docs]: /integrations/ign_sismologia/ [influxdb docs]: /integrations/influxdb/ -[insteon_local docs]: /integrations/insteon_local/ -[insteon_plm docs]: /integrations/insteon_plm/ +[insteon_local docs]: /integrations/insteon/ +[insteon_plm docs]: /integrations/insteon/ [introduction docs]: /integrations/introduction/ [lcn docs]: /integrations/lcn/ [light docs]: /integrations/light/ diff --git a/source/_posts/2019-08-28-release-98.markdown b/source/_posts/2019-08-28-release-98.markdown index 40ad7cd4773..e82affce39c 100644 --- a/source/_posts/2019-08-28-release-98.markdown +++ b/source/_posts/2019-08-28-release-98.markdown @@ -806,7 +806,6 @@ anymore. - ([@abmantis] - [#25971]) [geniushub docs]: /integrations/geniushub/ [geonetnz_quakes docs]: /integrations/geonetnz_quakes/ [google_maps docs]: /integrations/google_maps/ -[googlehome docs]: /integrations/googlehome/ [group docs]: /integrations/group/ [heos docs]: /integrations/heos/ [homekit_controller docs]: /integrations/homekit_controller/ From d12924444763f20a36aa0da79a5f71164aec7262 Mon Sep 17 00:00:00 2001 From: Anders Fogh Eriksen Date: Sun, 6 Oct 2019 23:11:14 +0200 Subject: [PATCH 20/45] Bump Python version in Travis CI example (#10635) --- source/_docs/ecosystem/backup/backup_github.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 1d0845c6085..967585395f0 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -159,7 +159,7 @@ Example .travis.yml ```yaml language: python python: - - "3.5" + - "3.7" before_install: - mv travis_secrets.yaml secrets.yaml - sudo apt-get install -y libudev-dev From c3a027a9a37db6cb149648e089d1c4400b69fe49 Mon Sep 17 00:00:00 2001 From: scheric <38077357+scheric@users.noreply.github.com> Date: Sun, 6 Oct 2019 23:13:26 +0200 Subject: [PATCH 21/45] Update SolarEdge_local documentation (#10611) * update SolarEdge_local documentation * all inverters without a lcd screen * fix broken link * Update solaredge_local.markdown * Update solaredge_local.markdown * Update solaredge_local.markdown * Update solaredge_local.markdown * Update solaredge_local.markdown * Update solaredge_local.markdown * Add unit and icon to template example * Update solaredge_local.markdown --- source/_integrations/solaredge_local.markdown | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index 90606d16067..d536dc76e91 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -11,14 +11,17 @@ ha_iot_class: Local Polling The `solaredge_local` platform uses the local API available on some SolarEdge Inverters to allow you to get details from your SolarEdge solar power setup and integrate these into your Home Assistant installation. -Only specific models support the local API. The local API is available on the SExxxxH-US models with SetApp as well as European three-phase inverters SEXXK-XXXTXBXX4 models with SetApp like SE3K-E10K, SE12.5K-SE27.6K and SE33.3K. Please check the datasheets carefully if in the section "Additional Features", sub-section "Inverter Commissioning" is present the following line "With the SetApp mobile application using built-in Wi-Fi access point for local connection". +Only specific models support the local API. The local API is available on inverters that do not have an LCD character screen. You can also check the datasheets if in the section "Additional Features", sub-section "Inverter Commissioning" is present the following line "With the SetApp mobile application using built-in Wi-Fi access point for local connection". These inverters also have a part number that ends with a 4. For example: SEXXK-XXXXXBXX4 or SEXXXXH-XXXXXBXX4 -You can check by finding the IP address of your inverter and visiting it in a browser. If it supports the local API, you'll see the SolarEdge logo and a "Commissioning" menu. +You can check if the local API works by finding the IP address of your inverter and visiting it in a browser. If it supports the local API, you'll see a HTML page with the SolarEdge logo and a "Commissioning" menu.
-If your inveter does not support the local API, you can use the [cloud based version](/integrations/solaredge/) instead. + +If your inverter does not support the local API, you can use the [cloud based version](/integrations/solaredge/) +
+ ## Configuration To use the SolarEdge sensors in your installation, add the following to your configuration.yaml file: @@ -26,8 +29,8 @@ To use the SolarEdge sensors in your installation, add the following to your con ```yaml # Example configuration.yaml entry sensor: - platform: solaredge_local - ip_address: IP_ADDRESS + - platform: solaredge_local + ip_address: IP_ADDRES ``` {% configuration %} @@ -64,5 +67,7 @@ sensor: sensors: solaredge_energy_this_year_template: value_template: "{{ (states('sensor.solaredge_energy_this_year') | float / 1000) | round(2) }}" + unit_of_measurement: 'KWh' + icon_template: "mdi:solar-power" ``` {% endraw %} From 0283a93c29583556771e15c55761779b42d1220f Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Sun, 6 Oct 2019 23:24:53 +0200 Subject: [PATCH 22/45] Require the entity_id for all Xiaomi miIO services (#10633) --- source/_integrations/fan.xiaomi_miio.markdown | 38 +++++++++---------- .../_integrations/light.xiaomi_miio.markdown | 16 ++++---- .../_integrations/switch.xiaomi_miio.markdown | 8 ++-- .../_integrations/vacuum.xiaomi_miio.markdown | 12 +++--- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/source/_integrations/fan.xiaomi_miio.markdown b/source/_integrations/fan.xiaomi_miio.markdown index 8e8acf1f0ec..901f1a5c624 100644 --- a/source/_integrations/fan.xiaomi_miio.markdown +++ b/source/_integrations/fan.xiaomi_miio.markdown @@ -311,7 +311,7 @@ Set the fan speed/operation mode. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific air purifier. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `speed` | no | Fan speed. Valid values are 'Auto', 'Silent', 'Favorite' and 'Idle' | ### Service `fan.xiaomi_miio_set_buzzer_on` (Air Purifier Pro excluded) @@ -320,7 +320,7 @@ Turn the buzzer on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_buzzer_off` (Air Purifier Pro excluded) @@ -328,7 +328,7 @@ Turn the buzzer off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_led_on` (Air Purifiers only) @@ -336,7 +336,7 @@ Turn the led on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_led_off` (Air Purifiers only) @@ -344,7 +344,7 @@ Turn the led off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_child_lock_on` @@ -352,7 +352,7 @@ Turn the child lock on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_child_lock_off` @@ -360,7 +360,7 @@ Turn the child lock off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_led_brightness` (Air Purifier 2S and Air Purifier Pro excluded) @@ -368,7 +368,7 @@ Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `brightness` | no | Brightness, between 0 and 2. | ### Service `fan.xiaomi_miio_set_favorite_level` (Air Purifiers only) @@ -377,7 +377,7 @@ Set the favorite level of the operation mode "favorite". | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `level` | no | Level, between 0 and 16. | ### Service `fan.xiaomi_miio_set_auto_detect_on` (Air Purifier 2S and Air Purifier Pro only) @@ -386,7 +386,7 @@ Turn the auto detect on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_auto_detect_off` (Air Purifier 2S and Air Purifier Pro only) @@ -394,7 +394,7 @@ Turn the auto detect off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_learn_mode_on` (Air Purifier 2 only) @@ -402,7 +402,7 @@ Turn the learn mode on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_learn_mode_off` (Air Purifier 2 only) @@ -410,7 +410,7 @@ Turn the learn mode off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_volume` (Air Purifier Pro only) @@ -418,7 +418,7 @@ Set the sound volume. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `volume` | no | Volume, between 0 and 100. | ### Service `fan.xiaomi_miio_reset_filter` (Air Purifier 2 only) @@ -427,7 +427,7 @@ Reset the filter lifetime and usage. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_extra_features` (Air Purifier only) @@ -435,7 +435,7 @@ Set the extra features. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `features` | no | Integer, known values are 0 and 1. | ### Service `fan.xiaomi_miio_set_target_humidity` (Air Humidifier only) @@ -444,7 +444,7 @@ Set the target humidity. | Service data attribute | Optional | Description | |---------------------------|----------|-----------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | | `humidity` | no | Target humidity. Allowed values are 30, 40, 50, 60, 70 and 80 | ### Service `fan.xiaomi_miio_set_dry_on` (Air Humidifier CA only) @@ -453,7 +453,7 @@ Turn the dry mode on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | ### Service `fan.xiaomi_miio_set_dry_off` (Air Humidifier CA only) @@ -461,4 +461,4 @@ Turn the dry mode off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miIO fan entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. | diff --git a/source/_integrations/light.xiaomi_miio.markdown b/source/_integrations/light.xiaomi_miio.markdown index 3a52336e7a4..f6b160f1798 100644 --- a/source/_integrations/light.xiaomi_miio.markdown +++ b/source/_integrations/light.xiaomi_miio.markdown @@ -138,7 +138,7 @@ Set one of the 4 available fixed scenes. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | | `scene` | no | Scene, between 1 and 4. | ### Service `light.xiaomi_miio_set_delayed_turn_off` @@ -147,7 +147,7 @@ Delayed turn off. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | | `time_period` | no | Time period for the delayed turn off. | ### Service `light.xiaomi_miio_reminder_on` (Eyecare Smart Lamp 2 only) @@ -156,7 +156,7 @@ Enable the eye fatigue reminder/notification. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | ### Service `light.xiaomi_miio_reminder_off` (Eyecare Smart Lamp 2 only) @@ -164,7 +164,7 @@ Disable the eye fatigue reminder/notification. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | ### Service `light.xiaomi_miio_night_light_mode_on` (Eyecare Smart Lamp 2 only) @@ -172,7 +172,7 @@ Turn the smart night light mode on. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | ### Service `light.xiaomi_miio_night_light_mode_off` (Eyecare Smart Lamp 2 only) @@ -180,7 +180,7 @@ Turn the smart night light mode off. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | ### Service `light.xiaomi_miio_eyecare_mode_on` (Eyecare Smart Lamp 2 only) @@ -188,7 +188,7 @@ Turn the eyecare mode on. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | ### Service `light.xiaomi_miio_eyecare_mode_off` (Eyecare Smart Lamp 2 only) @@ -196,4 +196,4 @@ Turn the eyecare mode off. | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on a specific light. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO light entity. | diff --git a/source/_integrations/switch.xiaomi_miio.markdown b/source/_integrations/switch.xiaomi_miio.markdown index 89bea373127..17049dc3faf 100644 --- a/source/_integrations/switch.xiaomi_miio.markdown +++ b/source/_integrations/switch.xiaomi_miio.markdown @@ -94,7 +94,7 @@ Turn the wifi led on. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO switch entity. | ### Service `switch.xiaomi_miio_set_wifi_led_off` (Power Strip only) @@ -102,7 +102,7 @@ Turn the wifi led off. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO switch entity. | ### Service `switch.xiaomi_miio_set_power_price` (Power Strip) @@ -110,7 +110,7 @@ Set the power price. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO switch entity. | | `price` | no | Power price, between 0 and 999. | ### Service `switch.xiaomi_miio_set_power_mode` (Power Strip V1 only) @@ -119,5 +119,5 @@ Set the power mode. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------------------| -| `entity_id` | yes | Only act on a specific Xiaomi miio switch entity. Else targets all. | +| `entity_id` | no | Only act on a specific Xiaomi miIO switch entity. | | `mode` | no | Power mode, valid values are 'normal' and 'green' | diff --git a/source/_integrations/vacuum.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index cf31fab2000..b00631d5f9d 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -68,7 +68,7 @@ Start the remote control mode of the robot. You can then move it with `remote_co | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------| -| `entity_id` | yes | Only act on a specific robot; default targets all | +| `entity_id` | no | Only act on a specific robot | ### Service `vacuum.xiaomi_remote_control_stop` @@ -76,7 +76,7 @@ Exit the remote control mode of the robot. | Service data attribute | Optional | Description | |---------------------------|----------|---------------------------------------------------| -| `entity_id` | yes | Only act on a specific robot; default targets all | +| `entity_id` | no | Only act on a specific robot | ### Service `vacuum.xiaomi_remote_control_move` @@ -84,7 +84,7 @@ Remote control the robot. Please ensure you first set it in remote control mode | Service data attribute | Optional | Description | |---------------------------|----------|-----------------------------------------------------------| -| `entity_id` | yes | Only act on a specific robot; default targets all | +| `entity_id` | no | Only act on a specific robot | | `velocity` | no | Speed: between -0.29 and 0.29 | | `rotation` | no | Rotation: between -179 degrees and 179 degrees | | `duration` | no | The number of milliseconds that the robot should move for | @@ -95,7 +95,7 @@ Enter remote control mode, make one move, stop, and exit remote control mode. | Service data attribute | Optional | Description | |---------------------------|----------|-----------------------------------------------------------| -| `entity_id` | yes | Only act on a specific robot; default targets all | +| `entity_id` | no | Only act on a specific robot | | `velocity` | no | Speed: between -0.29 and 0.29 | | `rotation` | no | Rotation: between -179 degrees and 179 degrees | | `duration` | no | The number of milliseconds that the robot should move for | @@ -106,9 +106,9 @@ Start the cleaning operation in the areas selected for the number of repeats ind | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific robot; default targets all | +| `entity_id` | no | Only act on a specific robot | | `zone` | no | List of zones. Each zone is an array of 4 integer value. Example: [[23510,25311,25110,26361]] | -| `repeats` | no | Number of cleaning repeats for each zone between 1 and 3. | +| `repeats` | no | Number of cleaning repeats for each zone between 1 and 3. | Example of `vacuum.xiaomi_clean_zone` use: From c47bb891272fc06233481e75ea7eb4ad2c1fe20a Mon Sep 17 00:00:00 2001 From: finity69x2 <32221243+finity69x2@users.noreply.github.com> Date: Mon, 7 Oct 2019 06:28:29 -0400 Subject: [PATCH 23/45] clarify how the advanced options need to be added (#10647) --- source/_integrations/life360.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index 89a1f1268a8..f11c4dd1ee3 100644 --- a/source/_integrations/life360.markdown +++ b/source/_integrations/life360.markdown @@ -17,7 +17,7 @@ You must first [create a Life360 account](https://www.life360.com/websignup). Then in the Home Assistant user interface (UI), click on Configuration in the left pane, then on Integrations and then on the yellow circle in the lower-right corner to "Set up a new integration." Scroll through the list and click on Life360. Enter your Life360 username and password and click SUBMIT. You can add as many Life360 accounts as you like. -If you would like to set any advanced options, see the following section. You may want to do this before entering your Life360 account information in the UI, or you can change it at any time. You can also enter your account information in the configuration file (in addition to, or instead of, the UI) if you prefer. +If you would like to set any advanced options, see the following section. You may want to do this before entering your Life360 account information in the UI, or you can change it at any time. Any of the advanced options you want to set from the section below will need to be set manually in your configuration.yaml file. They are not able to be set from the UI. You can also enter your account information in the configuration file (in addition to, or instead of, the UI) if you prefer. {% configuration %} accounts: From 4b2d43a0b06a1db22a5e7bd9094debbfbf5f8951 Mon Sep 17 00:00:00 2001 From: Fabian Rodriguez Date: Mon, 7 Oct 2019 06:30:19 -0400 Subject: [PATCH 24/45] Added links to Anthem products (#10646) Added links to Anthem products individual overview pages --- source/_integrations/anthemav.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/anthemav.markdown b/source/_integrations/anthemav.markdown index 3d232210814..08bcbe64910 100644 --- a/source/_integrations/anthemav.markdown +++ b/source/_integrations/anthemav.markdown @@ -12,10 +12,10 @@ Both [Anthem]'s current and last generation of A/V Receivers and Processors supp ## Supported Models -* MRX 520, MRX 720, MRX 1120, and AVM 60 -* MRX 310, MRX 510, MRX 710 +* [MRX 520](https://www.anthemav.com/products-current/series=mrx-series-gen3/model=mrx-520/page=overview), [MRX 720](https://www.anthemav.com/products-current/collection=performance/model=mrx-720/page=overview), [MRX 1120](https://www.anthemav.com/products-current/collection=performance/model=mrx-1120/page=overview), and [AVM 60](https://www.anthemav.com/products-current/model=avm-60/page=overview) +* [MRX 310](https://www.anthemav.com/products-archived/type=av-receiver/model=mrx-310/page=overview), [MRX 510](https://www.anthemav.com/products-archived/series=mrx-series/model=mrx-510/page=overview), [MRX 710](https://www.anthemav.com/products-archived/type=av-receiver/model=mrx-710/page=overview) -Support is provided through the Python [anthemav] module. Older, RS-232 serial-based units like the D2v use a different protocol entirely and are not currently supported. +Support is provided through the Python [anthemav] module. Older, RS-232 serial-based units like the [D2v](https://www.anthemav.com/products-current/type=av-processor/model=d2v-3d/page=overview) use a different protocol entirely and are not currently supported. [Anthem]: http://www.anthemav.com/ [anthemav]: https://github.com/nugget/python-anthemav From 6822874da8ba877ce3e48f89d02630b8a902a30b Mon Sep 17 00:00:00 2001 From: Fabian Rodriguez Date: Mon, 7 Oct 2019 06:31:07 -0400 Subject: [PATCH 25/45] Added links to receivers (#10645) Links to receivers spec pages at yamaha.com --- source/_integrations/yamaha.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_integrations/yamaha.markdown b/source/_integrations/yamaha.markdown index d995a428ffe..ce8c04b7ebc 100644 --- a/source/_integrations/yamaha.markdown +++ b/source/_integrations/yamaha.markdown @@ -11,11 +11,11 @@ The `yamaha` platform allows you to control [Yamaha Network Receivers](http://us Supported devices: -- HTR-4065 -- RX-V473 -- RX-V573 -- RX-V673 -- RX-V773 +- [HTR-4065](http://www.yamaha.com/cchtr4065/) +- [RX-V473](https://ca.yamaha.com/en/products/audio_visual/av_receivers_amps/rx-v473/specs.html) +- [RX-V573](https://ca.yamaha.com/en/products/audio_visual/av_receivers_amps/rx-v573/specs.html) +- [RX-V673](https://ca.yamaha.com/en/products/audio_visual/av_receivers_amps/rx-v673/specs.html) +- [RX-V773](https://ca.yamaha.com/en/products/audio_visual/av_receivers_amps/rx-v773/specs.html) - And more To add a Yamaha Network Receiver to your installation, add the following to your `configuration.yaml` file: From 0ee25497daafa8e8e895e28e6c0b45578a3c005f Mon Sep 17 00:00:00 2001 From: Brendon Baumgartner Date: Mon, 7 Oct 2019 03:35:01 -0700 Subject: [PATCH 26/45] speedtest port 8080 (#10644) --- source/_integrations/speedtestdotnet.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index b6f09865304..fdab413f67e 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -15,6 +15,8 @@ Enabling this integration will automatically create the Speedtest.net Sensors fo By default, a speed test will be run every hour. The user can change the update frequency in the configuration by defining the `scan_interval` for a speed test to run. +Most Speedtest.net servers require TCP port 8080 outbound to function. Without this port open you may experience significant delays or no results at all. See note on their [help page](https://www.speedtest.net/help). + ## Configuration For the `server_id` check the list of [available servers](https://www.speedtest.net/speedtest-servers.php). From 083351b990596508e594843ede5ab74290e6f1ac Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 7 Oct 2019 18:54:55 +0200 Subject: [PATCH 27/45] Add Netlify header control to improve CouldFlare caching behavior (#10628) * Add Netlify header control to improve CouldFlare caching behavior * Add security headers * Add old school cache busting to Jekyll css/js * Add a little browser cache to assets to improve speed of pages --- _config.yml | 3 ++- source/_headers | 20 ++++++++++++++++++++ source/_includes/javascripts/scripts.html | 2 +- source/_includes/site/head.html | 4 ++-- 4 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 source/_headers diff --git a/_config.yml b/_config.yml index 1fcd8b3c3e8..992531cb00f 100644 --- a/_config.yml +++ b/_config.yml @@ -134,5 +134,6 @@ defaults: # Support for files Jekyll will normally exclude include: - - ".well-known" + - "_headers" - "_redirects" + - ".well-known" diff --git a/source/_headers b/source/_headers new file mode 100644 index 00000000000..fc8bb7936c7 --- /dev/null +++ b/source/_headers @@ -0,0 +1,20 @@ +/* + Cache-Control: public, max-age: 0, s-max-age=3600, must-revalidate + Content-Security-Policy: form-action https: + Feature-Policy: vibrate 'none'; geolocation 'none'; midi 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none'; speaker 'none'; vibrate 'none'; payment 'none' + Referrer-Policy: strict-origin-when-cross-origin + X-Content-Type-Options: nosniff + X-Frame-Options: DENY + X-XSS-Protection: 1; mode=block +/*.css + Cache-Control: public, max-age: 604800, s-max-age=604800 +/*.js + Cache-Control: public, max-age: 604800, s-max-age=604800 +/assets/* + Cache-Control: public, max-age: 0, s-max-age=604800, must-revalidate +/fonts/* + Cache-Control: public, max-age: 1800, s-max-age=604800, must-revalidate +/images/* + Cache-Control: public, max-age: 1800, s-max-age=604800, must-revalidate +/static/* + Cache-Control: public, max-age: 1800, s-max-age=604800, must-revalidate diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html index 5f7df97cef5..4330401c789 100644 --- a/source/_includes/javascripts/scripts.html +++ b/source/_includes/javascripts/scripts.html @@ -5,7 +5,7 @@ g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js s.parentNode.insertBefore(g,s)}(document,'script')); - + diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index be4531fca06..35b140ccf88 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -28,8 +28,8 @@ - - + + From 8038c50949ec3969bb1b8bf46ba173d413e66614 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Thu, 3 Oct 2019 11:35:00 -0500 Subject: [PATCH 28/45] Update changelog.markdown (#10589) * Update changelog.markdown * Update changelog.markdown --- source/lovelace/changelog.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown index a9392581543..aed4dbe4736 100644 --- a/source/lovelace/changelog.markdown +++ b/source/lovelace/changelog.markdown @@ -2,6 +2,24 @@ title: "Lovelace Changelog" description: "Changelog of the Lovelace UI." --- +## Changes in 0.100.0 +- 📣 [picture glance card]: New config `tap_action` and `hold_action` for `entities` (#3807) @iantrich +- 📣 [entities card]: New config `image` for `entities` (#3832) @iantrich +- 📣 [entity filter card]: Support for operators in `state_filter` and individual `state_filter` option for `entitites` (#3692) @iantrich +- 📣 [light card]: New config `icon` (#3771) @iantrich +- 📣 [picture entity card]: UI Editor (#3708) @iantrich +- 📣 [picture glance card]: UI Editor (#3709) @iantrich +- 📣 [history graph card]: UI Editor (#3782) @iantrich +- 📣 Add support for panels to cast (#3796) @bramkragten +- 📣 Allow for user text selection (Android Chrome not supported) (#3605) @iantrich +- 📣 add `state_filter` to picture cards (#3791) @iantrich +- 📣 Add a setting for vibration (#3813) @bramkragten +- 📣 Switch paper-toggle-button to mwc-switch (#3683) @iantrich +- 📣 New Action `url` (#3773) @iantrich +- 🔧 [map card]: Align background with tiles (#3858) @bramkragten +- 🔧 [map card]: Fix dark switch for map card editor (#3856) @bramkragten +- 🔧 [views]: Guard for null badges (#3841) @bramkragten + ## Changes in 0.99.0 - 📣 [glance card]: New config `show_last_changed` for `entities` - 📣 [glance card]: New config `image` for `entities` From d6c2db6c6ad59ccbcbea159cf68cbc971872b0cf Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Tue, 8 Oct 2019 11:55:08 +0100 Subject: [PATCH 29/45] Update instructions for using Check Config Tool (#10619) * automation troubleshooting.markdown Add explanation of making check config visible * withings.markdown Add explanation of how to make the check config tool visible * configuration.markdown Add explanation to display the check config tool --- source/_docs/automation/troubleshooting.markdown | 2 +- source/_integrations/withings.markdown | 10 ++++++---- source/getting-started/configuration.markdown | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index f72f410ff0c..5085acd0a12 100644 --- a/source/_docs/automation/troubleshooting.markdown +++ b/source/_docs/automation/troubleshooting.markdown @@ -28,7 +28,7 @@ Please note that if you click on **Trigger** of an automation in the frontend, * All this makes that Trigger feature pretty limited and nearly useless for debugging purposes so you need to find another way. Make sure you check and adapt to your circumstances appropriate examples from Automation Trigger, Conditions and Actions. -It is also useful to go to **Configuration** -> **Server Control** and click on **Check Config** button in Configuration validation section to make sure there are no syntax errors before restarting Home Assistant. +It is also useful to go to **Configuration** -> **Server Control** and click on **Check Config** button in Configuration validation section to make sure there are no syntax errors before restarting Home Assistant. In order for **Check Config** to be visible, you must enable **Advanced Mode** on your user profile. If your automation uses templates in any part, you can do the following to make sure it works as expected: diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 8833a78a5a4..ae66ac8846a 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -2,7 +2,7 @@ title: "Withings" description: "Instructions on how to integrate Withings health products within Home Assistant." logo: withings.png -ha_category: +ha_category: - Health - Sensor ha_release: 0.99 @@ -15,7 +15,7 @@ The `withings` sensor platform consumes data from various health products produc ### Step 1 - Create a Withings Account -You must have a developer account to distribute the data. [Create a free development account](https://account.withings.com/partner/add_oauth2). +You must have a developer account to distribute the data. [Create a free development account](https://account.withings.com/partner/add_oauth2). Values for your account: @@ -42,7 +42,7 @@ Withings supports multiple profiles per account. Each profile has a person's nam ### Step 3 - Authorize Home Assistant -- Confirm your YAML configuration is valid by using the `Check Config` tool. +- Confirm your YAML configuration is valid by using the `Check Config` tool (see note). - Restart Home Assistant. - Go to the integrations page. - Add a Withings integration. @@ -50,12 +50,14 @@ Withings supports multiple profiles per account. Each profile has a person's nam - On the Withings site, choose the profile you selected in the previous step (if prompted). - Note: It's important you select the same profile from the previous step. Choosing a different one will result in Home Assistant displaying data for profile 2, but it will be labeled as profile 1. - Authorize the application. Your browser will redirect you to your Home Assistant URL. - - Note: If you get a browser error saying the site is inaccessible, you can modify the + - Note: If you get a browser error saying the site is inaccessible, you can modify the `http://domain` portion of the URL to something you know is accessible, locally or publically. For example, `http://localhost:8123`. This occurs when the base URL provided by Home Assistant to Withings is not accessible to the outside world. Changing the domain will not affect how data is synchronized. - Data will synchronize immediately and update every 5 minutes. +Note: In order for "Check Config" to be visible, you must enable "Advanced Mode" on your user profile. The "Check Config" tool can be found by clicking "Configuration" from the sidebar (cog icon) and then clicking "Server Control". + ## Configuration ```yaml diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 9f7c921ff95..75fe7f154ef 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -31,7 +31,7 @@ Now let's make a small change using the configurator: we are going to change the - 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. - 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. + - Now Restart Home Assistant using the "restart" in the Server management section on the same page. In order for "Check Config" to be visible, you must enable "Advanced Mode" on your user profile.

From 774fbdd195e97efb7569c72af8d46ca9e09c7384 Mon Sep 17 00:00:00 2001 From: wmn79 Date: Tue, 8 Oct 2019 14:05:04 +0200 Subject: [PATCH 30/45] Added note for users of earlier versions than 0.97 (#10659) * Added note for users of earlier versions than 0.97 Updated page with a note for users coming from earlier versions than 0.97 to only remove password from the config file. Used parts of the text from the breaking change text for release 0.97. Fixes issue #10179 * MInor change --- source/_integrations/google_maps.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index becbbfc9b0a..40603019494 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -47,3 +47,7 @@ scan_interval: default: 60 type: integer {% endconfiguration %} + +

+As of release 0.97 Google passwords are no longer required in your configuration. Users coming from earlier releases should only remove the password entry from their configuration file (username is still required) and restart Home Assistant. The cookie file previously generated should still be valid and will allow the tracker to continue functioning normally until the cookie is invalidated. +
From 5b41bb0abc7844b37cd0423466f05e7e016245d8 Mon Sep 17 00:00:00 2001 From: Eirik Z <46269073+atxbyea@users.noreply.github.com> Date: Tue, 8 Oct 2019 15:57:05 +0200 Subject: [PATCH 31/45] Update with working instructions (#10663) * Update with working instructions Old instructions failed to include virtualenv, also failed to actually start HA as the config directory it default creates was wrong, and empty. * Minor changes --- source/_docs/installation/freenas.markdown | 37 +++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index e7057b16d6a..08c2a4109a0 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -14,13 +14,15 @@ pw groupadd -n homeassistant -g 8123 echo 'homeassistant:8123:8123::::::/bin/csh:' | adduser -f - ``` -Install the necessary Python packages: +Install the necessary Python packages and virtualenv: ```bash pkg update pkg upgrade pkg install -y python37 py37-sqlite3 ca_root_nss python3.7 -m ensurepip +pip3 install --upgrade pip +pip3 install --upgrade virtualenv ``` Create the configuration directory: @@ -45,11 +47,38 @@ cd /usr/local/share/homeassistant virtualenv -p python3.7 . source ./bin/activate.csh pip3 install homeassistant +``` + +While still in the `venv`, start Home Assistant to populate the configuration directory. + +```bash +hass --open-ui +``` + +Wait until you see: + +```bash +(MainThread) [homeassistant.core] Starting Home Assistant +``` + +Then escape and exit the `venv`. + +```bash deactivate exit ``` -Create an `rc.d` script for the system-level service that enables Home Assistant to start when the jail starts. Create a file at `/usr/local/etc/rc.d/homeassistant` with the following contents: +Create the directory and the `rc.d` script for the system-level service that enables Home Assistant to start when the jail starts. + +```bash +mkdir /usr/local/etc/rc.d/ +``` + +Then create a file at `/usr/local/etc/rc.d/homeassistant` and insert the content below: + +```bash +vi /usr/local/etc/rc.d/homeassistant +``` ```bash #!/bin/sh @@ -71,7 +100,7 @@ Create an `rc.d` script for the system-level service that enables Home Assistant # empty string as this will cause the daemon to run with group wheel. # Default: homeassistant # homeassistant_config_dir: Directory where config files are located. -# Default: /usr/local/homeassistant +# Default: /usr/home/homeassistant/.homeassistant # homeassistant_install_dir: Directory where Home Assistant is installed. # Default: /usr/local/share/homeassistant # @@ -89,7 +118,7 @@ load_rc_config ${name} : ${homeassistant_enable:="NO"} : ${homeassistant_user:="homeassistant"} : ${homeassistant_group:="homeassistant"} -: ${homeassistant_config_dir:="/usr/local/homeassistant"} +: ${homeassistant_config_dir:="/usr/home/homeassistant/.homeassistant"} : ${homeassistant_install_dir:="/usr/local/share/homeassistant"} command="/usr/sbin/daemon" From 0064a22f341048e22d7c80494d5ee1ca00a62463 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 8 Oct 2019 16:55:32 +0200 Subject: [PATCH 32/45] Update for Python 3.8 (#10665) --- source/_docs/installation/fedora.markdown | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/source/_docs/installation/fedora.markdown b/source/_docs/installation/fedora.markdown index 0db6af933c9..ed399d8517c 100644 --- a/source/_docs/installation/fedora.markdown +++ b/source/_docs/installation/fedora.markdown @@ -11,12 +11,6 @@ Install the development package of Python. sudo dnf -y install python3-devel redhat-rpm-config ``` -and Home Assistant itself. - -```bash -pip3 install homeassistant -``` - To isolate the Home Assistant installation a [`venv`](https://docs.python.org/3/library/venv.html) is handy. First create a new directory to store the installation and adjust the permissions. ```bash @@ -24,19 +18,20 @@ sudo mkdir -p /opt/homeassistant sudo useradd -rm homeassistant -G dialout sudo chown -R homeassistant:homeassistant /opt/homeassistant ``` + Now switch to the new directory, setup the `venv`, and activate it. ```bash sudo -u homeassistant -H -s cd /opt/homeassistant -python3.6 -m venv . +python3.8 -m venv . source bin/activate ``` Install Home Assistant itself. ```bash -$ pip3 install homeassistant colorlog +pip3 install homeassistant colorlog ``` Check the [autostart](/docs/autostart/systemd/) section in the documentation for further details and the [Firewall section](/docs/installation/troubleshooting/#no-access-to-the-frontend) if you want to access your Home Assistant installation. From 8f385b12e885bff9a11c61564753f2ca6827351d Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Tue, 8 Oct 2019 22:03:35 +0200 Subject: [PATCH 33/45] Update frontend release notes (#10666) --- source/_posts/2019-10-09-release-100.markdown | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_posts/2019-10-09-release-100.markdown b/source/_posts/2019-10-09-release-100.markdown index c115d96e8e2..81d95b53330 100644 --- a/source/_posts/2019-10-09-release-100.markdown +++ b/source/_posts/2019-10-09-release-100.markdown @@ -39,7 +39,9 @@ TBD When we are on automations, we have taken that to the last release introduced device page. You can now see all the triggers, conditions and actions the device supports, and create an automation with it in 1 click. Also the entity registry is added to the device page, so you can change all the settings of the devices entities in one place. -By default the disabled entities are now hidden, you can show them with the switch on the top. +By default the disabled entities are now hidden, you can show them with the switch on the top, this is the same on the general entity registry page. + +When you rename a device on the device page, it will now also rename the entities of that device if they contain the device name. When you are in advanced mode, it can also rename the entity id's for you. ### We say goodbye to JSON @@ -310,6 +312,10 @@ This includes: ## All frontend changes +* Fix whitespace error in services ([#3880](https://github.com/home-assistant/home-assistant-polymer/pull/3880)) [@bramkragten](https://github.com/bramkragten) +* Hide empty blocks on device page ([#3950](https://github.com/home-assistant/home-assistant-polymer/pull/3950)) [@bramkragten](https://github.com/bramkragten) +* Fix updating entity id in entity-registry-dialog ([#3962](https://github.com/home-assistant/home-assistant-polymer/pull/3862)) [@bramkragten](https://github.com/bramkragten) +* Add report state toggle for Google ([#3855](https://github.com/home-assistant/home-assistant-polymer/pull/3855)) [@bramkragten](https://github.com/bramkragten) * Fix dark switch for map card editor ([#3856](https://github.com/home-assistant/home-assistant-polymer/pull/3856)) [@bramkragten](https://github.com/bramkragten) * Align background with tiles ([#3858](https://github.com/home-assistant/home-assistant-polymer/pull/3858)) [@bramkragten](https://github.com/bramkragten) * Allow yaml in dev states ([#3859](https://github.com/home-assistant/home-assistant-polymer/pull/3859)) [@bramkragten](https://github.com/bramkragten) From 46c6684d3354ca3a57e106f2d22b8de8c02e2c8f Mon Sep 17 00:00:00 2001 From: cogneato Date: Tue, 8 Oct 2019 21:07:04 -0600 Subject: [PATCH 34/45] Add descriptions to breaking changes (#10670) --- source/_posts/2019-10-09-release-100.markdown | 105 +++++++++++++++--- 1 file changed, 87 insertions(+), 18 deletions(-) diff --git a/source/_posts/2019-10-09-release-100.markdown b/source/_posts/2019-10-09-release-100.markdown index 81d95b53330..0795443fbce 100644 --- a/source/_posts/2019-10-09-release-100.markdown +++ b/source/_posts/2019-10-09-release-100.markdown @@ -75,24 +75,93 @@ This includes: ## Breaking Changes -- Refactor nzbget to support future platform changes ([@chriscla] - [#26462]) ([nzbget docs]) (breaking change) -- Fix spaceapi ([@Bouni] - [#26453]) ([spaceapi docs]) (breaking change) -- Remove deprecated ups integration (ADR-0004) ([@frenck] - [#26824]) ([ups docs]) (breaking change) -- Remove deprecated usps integration (ADR-0004) ([@frenck] - [#26823]) ([usps docs]) (breaking change) -- Remove deprecated sytadin integration (ADR-0004) ([@frenck] - [#26819]) ([sytadin docs]) (breaking change) -- Remove deprecated srp_energy integration (ADR-0004) ([@frenck] - [#26826]) ([srp_energy docs]) (breaking change) -- Remove deprecated fedex integration (ADR-0004) ([@frenck] - [#26822]) ([fedex docs]) (breaking change) -- Remove deprecated linksys_ap integration (ADR-0004) ([@frenck] - [#26847]) ([linksys_ap docs]) (breaking change) -- Group Linky sensors to Linky meter device ([@piitaya] - [#26738]) ([linky docs]) (breaking change) -- Move elv integration to component and bump pypca ([@majuss] - [#26552]) ([elv docs]) (breaking change) -- Reorg device automation ([@balloob] - [#26880]) ([automation docs]) ([binary_sensor docs]) ([deconz docs]) ([device_automation docs]) ([light docs]) ([switch docs]) ([zha docs]) (breaking change) -- Add config flow to ecobee ([@marthoc] - [#26634]) ([ecobee docs]) (breaking change) -- Add config flow to transmission ([@engrbm87] - [#26434]) ([transmission docs]) (breaking change) -- Centralize rainbird config and add binary sensor platform ([@konikvranik] - [#26393]) ([rainbird docs]) (breaking change) (new-platform) -- Fix incomfort and Bump client to 0.3.5 ([@zxdavb] - [#26802]) ([incomfort docs]) (breaking change) -- Bugfix evohome ([@zxdavb] - [#26810]) ([evohome docs]) (breaking change) -- Update opentherm_gw.climate to match Climate 1.0 ([@mvn23] - [#25931]) ([opentherm_gw docs]) (breaking change) -- Tweak geniushub and bump client to v0.6.26 ([@zxdavb] - [#26640]) ([geniushub docs]) (breaking change) +- **Removed** - The following integrations which were marked in .98 for pending removal have now been removed (ADR-0004): + * **UPS** - ([@frenck] - [#26824]) ([ups docs]) + * **USPS** - ([@frenck] - [#26823]) ([usps docs]) + * **Sytadin** - ([@frenck] - [#26819]) ([sytadin docs]) + * **SRP Energy** - ([@frenck] - [#26826]) ([srp_energy docs]) + * **Fedex** - ([@frenck] - [#26822]) ([fedex docs]) + * **Linksys AP** - ([@frenck] - [#26847]) ([linksys_ap docs]) +- **NZBGet** - The integration has been changed to support multiple platforms and future events, and common code has been centralized to the component. The configuration has moved from the sensor platform to the `nzbget` key in configuration.yaml, and the `monitored_variables` option has been removed. Users need to update their configuration. - ([@chriscla] - [#26462]) ([nzbget docs]) + + New example configuration entry: + + ```yaml + nzbget: + host: 192.168.1.1 + ssl: false + ``` +- **SpaceAPI** - Values that were not compliant with the SpaceAPI specification were changed. + * `contact / mailing_list` has changed to `contact / ml`, to migrate change the `mailing_list` key to `ml` + * `location / address` is no longer required but is optional as the latitude and longitude properties of the location are added automatically from the HA config). There is no need to change anything. - ([@Bouni] - [#26453]) ([spaceapi docs]) + +- **Linky** - Linky sensors have been grouped to one Linky device. Users will need to remove and re-add the Linky integration to clear the device registry. - ([@piitaya] - [#26738]) ([linky docs]) + +- __Elv__ - ELV/PCA is now its own integration. Existing configuration should be removed and replaced. Optionally the port for the serial interface can be specified (default is: /dev/ttyUSB0). - ([@majuss] - [#26552]) ([elv docs]) + + Example configuration entry: + ```yaml + elv: + device: '/dev/ttyUSB0' + ``` + +- __Automation__ - Custom component developers who started playing with device automations only: we have restructured how integrations can expose their device triggers/conditions/actions. Instead of 1 platform `device_automation.py` it's now `device_action.py`, `device_trigger.py`, `device_condition.py`. + The method to attach a device trigger has been updated from `async_trigger` to `async_attach_trigger` to better reflect what is going on. - ([@balloob] - [#26880]) ([automation docs]) ([binary_sensor docs]) ([deconz docs]) ([device_automation docs]) ([light docs]) ([switch docs]) ([zha docs]) + +- **Ecobee** - Ecobee will now be set up via config flow. Existing users will have their config imported from ecobee.conf via an import flow so it shouldn't break their experience. Users configuring via configuration.yaml will have their api key and options imported into the flow but will still need to finish authorization via the flow (instead of the configurator component as previously). +The configuration parameter `hold_temp` has been removed, as it was not being used in the climate platform and had no effect on whether the temperature was held indefinitely or not. Users will need to remove the parameter `hold_temp` from configuration.yaml. +Ecobee-specific services will now be registered under the ecobee domain rather than the climate domain, and service names will not include the prefix "ecobee_" (e.g. the service "climate.ecobee_resume_program" will become "ecobee.resume_program"). - ([@marthoc] - [#26634]) ([ecobee docs]) +- **Transmission** - The Transmission integration can now be configured through a config flow via Integrations in the GUI. Once configured all sensors and switches will be created and available for the user. +`monitored_conditions` has been removed so existing users need to update their configuration in configuration.yaml and remove monitored conditions. The existing configuration will be imported as an entry under Integrations. - ([@engrbm87] - [#26434]) ([transmission docs]) + + Example configuration entry: + ```yaml + transmission: + host: 192.168.1.1 + ``` +- __Rainbird__ - Rainbird is now its own platform. The configuration of rainbird switches has been moved under `zones:` as part of the `rainbird:` integration. - ([@konikvranik] - [#26393]) ([rainbird docs]) + + Example configuration entry: + ```yaml + rainbird: + host: IP_ADDRESS_OF_MODULE + password: YOUR_PASSWORD + trigger_time: 6 + zones: + 1: + trigger_time: 6 + ``` +- **Incomfort** - Device state attributes that were causing pointless state changes have been removed: + * `"rf_message_rssi` signal strength (between gateway & boiler), changes almost every scan_interval + * `nodenr` unknown, is static + * `rfstatus_cntr` unknown, changes + + This is not likely to be considered a breaking change by users. - ([@zxdavb] - [#26802]) ([incomfort docs]) +- **Evohome** - Device state attributes keys have been changed to snake_case and, since this a breaking change, the opportunity was taken to revise/simplify the entire device state attributes schema. +Evohome is a complicated integration, has had major changes in recent times, and is not yet mature - these changes address some bugs and related architectural issues: + + * Modify behavior of set_temperature to mirror that of the vendor's UI (e.g. any target temp changes until next setpoint, unless explicitly set otherwise) + * Setpoint datetimes are now correctly converted to local/aware isoformat (internally, and for logging/state attributes) + * Use snake_case for device state attributes + * Add a unique_id for each entity (systemId, zoneID, dhwId) + * Refactoring - remove API wrappers (no longer using private methods) + * Add away mode for DHW (set to permanent off or Auto, depending)([@zxdavb] - [#26810]) ([evohome docs]) +- **OpenTherm** - Move climate entity state to hvac_action attribute to comply with climate 1.0. May break e.g. automations. - ([@mvn23] - [#25931]) ([opentherm_gw docs]) +- **Genius Hub** - Users connecting to a Hub via the v1 API will need to specify a valid MAC address for the hub (see example YAML, below). Those using the v3 API will be unaffected. +This change is in preperation for for further changes, so the geniushub entities can be given more appropriate `entity_ids`. + + Some Sensor entities fro GeniusHub Issues have been renamed, and so will get a new entity ID: + + * sensor.errors to sensor.geniushub_errors + * sensor.warnings to sensor.geniushub_warnings + * sensor.information to sensor.geniushub_informationeniushub and bump client to v0.6.26 - ([@zxdavb] - [#26640]) ([geniushub docs]) + + Example configuration entry: + ```yaml + geniushub: + token: JqVFd0UUEi... + mac: 18:CC:23:12:34:56 + ``` ## All changes From 139a33dd0a80d2e75fd950efc69b74392148267c Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Wed, 9 Oct 2019 10:02:57 +0100 Subject: [PATCH 35/45] Removed reference to input_slider (#10671) Long enough has passed since 0.55, referencing how things were back then is just causing confusion. --- source/_integrations/input_number.markdown | 6 ------ 1 file changed, 6 deletions(-) diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 4a601d0374f..93168999ab1 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -8,12 +8,6 @@ ha_release: 0.55 ha_qa_scale: internal --- -
- -Before version 0.55 this integration was known as `input_slider` and did not have the `mode` configuration option. Also, service `select_value` is now `set_value`. - -
- The `input_number` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. To enable this input number in your installation, add the following lines to your `configuration.yaml`: From 3030ae3793a8c02bdc0a2af03a24201b3e08beb8 Mon Sep 17 00:00:00 2001 From: claughinghouse Date: Wed, 9 Oct 2019 06:41:18 -0400 Subject: [PATCH 36/45] Fixed generic.camera links #10491 (#10669) --- source/_posts/2018-05-18-release-70.markdown | 2 +- source/_posts/2018-07-16-release-73-2.markdown | 2 +- source/_posts/2018-08-29-release-77.markdown | 2 +- source/_posts/2019-03-20-release-90.markdown | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_posts/2018-05-18-release-70.markdown b/source/_posts/2018-05-18-release-70.markdown index 6e05762d28c..60cd476658b 100644 --- a/source/_posts/2018-05-18-release-70.markdown +++ b/source/_posts/2018-05-18-release-70.markdown @@ -358,7 +358,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [bmw_connected_drive docs]: /integrations/bmw_connected_drive/ [camera docs]: /integrations/camera/ [camera.familyhub docs]: /integrations/familyhub -[camera.generic docs]: /integrations/generic +[camera.generic docs]: /integrations/generic_ip_camera [climate.mysensors docs]: /integrations/climate.mysensors/ [climate.sensibo docs]: /integrations/sensibo [climate.venstar docs]: /integrations/venstar diff --git a/source/_posts/2018-07-16-release-73-2.markdown b/source/_posts/2018-07-16-release-73-2.markdown index 90d8a8de1bd..251bb843ade 100644 --- a/source/_posts/2018-07-16-release-73-2.markdown +++ b/source/_posts/2018-07-16-release-73-2.markdown @@ -79,7 +79,7 @@ Local, so cannot be impacted: - [camera.amcrest](/integrations/amcrest) - [camera.doorbird](/integrations/doorbird#camera) - [camera.familyhub](/integrations/familyhub) -- [camera.generic](/integrations/generic) +- [camera.generic](/integrations/generic_ip_camera) - [camera.mjpeg](/integrations/mjpeg) - [camera.proxy](/integrations/proxy) - [camera.synology](/integrations/synology) diff --git a/source/_posts/2018-08-29-release-77.markdown b/source/_posts/2018-08-29-release-77.markdown index 692fd0d74e3..fd8b9a49eff 100644 --- a/source/_posts/2018-08-29-release-77.markdown +++ b/source/_posts/2018-08-29-release-77.markdown @@ -425,7 +425,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [bmw_connected_drive docs]: /integrations/bmw_connected_drive/ [calendar.google docs]: /integrations/calendar.google/ [camera docs]: /integrations/camera/ -[camera.generic docs]: /integrations/generic +[camera.generic docs]: /integrations/generic_ip_camera [camera.proxy docs]: /integrations/proxy [camera.push docs]: /integrations/push [climate docs]: /integrations/climate/ diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown index addbae610aa..0e5310b1341 100644 --- a/source/_posts/2019-03-20-release-90.markdown +++ b/source/_posts/2019-03-20-release-90.markdown @@ -721,7 +721,7 @@ Users will need to change `- platform: firetv` to `- platform: androidtv` in the [binary_sensor.workday docs]: /integrations/workday [camera docs]: /integrations/camera/ [camera.ffmpeg docs]: /integrations/camera.ffmpeg/ -[camera.generic docs]: /integrations/generic +[camera.generic docs]: /integrations/generic_ip_camera [camera.onvif docs]: /integrations/onvif [camera.proxy docs]: /integrations/proxy [camera.xeoma docs]: /integrations/xeoma From a68adbbc0e3756a2b89296aa9d3eec5e59c0e089 Mon Sep 17 00:00:00 2001 From: LJU Date: Wed, 9 Oct 2019 12:46:58 +0200 Subject: [PATCH 37/45] Update link to speedtestservers (#10612) * Update link to speedtestservers and server_id The link to the speedtestservers seems to be broken. The new link does work. Also the server_id seems to be mandatory at this point. So this sets the server_id to be required and in the example configuration.yaml inserts an example server_id. * Removes sever_id from configuration.yaml Removes sever_id from configuration.yaml. It's not necessary if server_id is optional. * Changes server_id to be optional again --- source/_integrations/speedtestdotnet.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index fdab413f67e..4449a58166b 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -19,7 +19,7 @@ Most Speedtest.net servers require TCP port 8080 outbound to function. Without t ## Configuration -For the `server_id` check the list of [available servers](https://www.speedtest.net/speedtest-servers.php). +For the `server_id` check the list of [available servers](http://www.speedtestserver.com). To add Speedtest.net sensors to your installation, add the following to your `configuration.yaml` file: From 6979a9310be0c3b762c12d889620d3f1ec588ecc Mon Sep 17 00:00:00 2001 From: jjlawren Date: Mon, 7 Oct 2019 14:37:37 -0500 Subject: [PATCH 38/45] Remove manual flow description, fix components->integrations reference (#10655) --- source/_integrations/plex.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index 8620c3fa52c..872fe7e7d87 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -29,9 +29,7 @@ Local and secure connections are preferred when setting up an Integration. After
-Alternatively, you can manually configure a Plex server connection by selecting the "Manual setup" option when configuring a Plex integration. This will allow you to specify the server connection options which will be validated before setup is completed. The available options are similar to the **Configuration Variables** section below. - -If [discovery](/components/discovery/) is enabled and a local Plex server is found, a legacy `media_player` configuration (i.e., a `plex.conf` file) will be imported. GDM can be enabled via the Plex Web App under **Settings** -> **(Server Name)** -> **Settings** -> **Network** and choosing **Enable local network discovery (GDM)**. +If [discovery](/integrations/discovery/) is enabled and a local Plex server is found, a legacy `media_player` configuration (i.e., a `plex.conf` file) will be imported. GDM can be enabled via the Plex Web App under **Settings** -> **(Server Name)** -> **Settings** -> **Network** and choosing **Enable local network discovery (GDM)**. The `plex` integration can also be configured via `configuration.yaml`: From 02c6c8975b4c6a01f81b257313e9aabb74c1514a Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 9 Oct 2019 22:27:45 +0200 Subject: [PATCH 39/45] =?UTF-8?q?Hint=20that=20problems=20with=20=C2=B0-sy?= =?UTF-8?q?mbol=20is=20caused=20by=20configuration=20not=20saved=20as=20UT?= =?UTF-8?q?F-8=20(#10673)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update sensor.command_line.markdown * Update sensor.command_line.markdown --- source/_integrations/sensor.command_line.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown index 77c98904a2f..670f5f2fb50 100644 --- a/source/_integrations/sensor.command_line.markdown +++ b/source/_integrations/sensor.command_line.markdown @@ -75,7 +75,7 @@ sensor: - platform: command_line name: HD Temperature command: "hddtemp -n /dev/sda" - # If errors occur, remove degree symbol below + # If errors occur, make sure configuration file is encoded as UTF-8 unit_of_measurement: "°C" ``` @@ -90,7 +90,7 @@ sensor: - platform: command_line name: CPU Temperature command: "cat /sys/class/thermal/thermal_zone0/temp" - # If errors occur, remove degree symbol below + # If errors occur, make sure configuration file is encoded as UTF-8 unit_of_measurement: "°C" value_template: '{{ value | multiply(0.001) | round(1) }}' ``` From a544cf45dd47e15b9427807895743e150e74bf4a Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 9 Oct 2019 22:28:41 +0200 Subject: [PATCH 40/45] Update troubleshooting.markdown (#10674) --- source/_docs/configuration/troubleshooting.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index 392794099dc..6c0b22d35cd 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -18,11 +18,12 @@ If you have incorrect entries in your configuration files you can use the [`chec #### Problems with the configuration -One of the most common problems with Home Assistant is an invalid `configuration.yaml` file. +One of the most common problems with Home Assistant is an invalid `configuration.yaml` or other configuration file. - You can test your configuration using the command line with: `hass --script check_config`. - On Hass.io you can use the [hassio command](/hassio/commandline/#home-assistant): `hassio homeassistant check`. - On Docker you can use `docker exec home-assistant python -m homeassistant --script check_config --config /config` - where `homeassistant` is the name of the container. + - The configuration files, including `configuration.yaml` must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8. - You can verify your configuration's yaml structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). From 2cb7defdb8da45a0d866e8887a25e463af700516 Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Wed, 9 Oct 2019 21:29:56 +0100 Subject: [PATCH 41/45] Clarity edit (#10672) The docs say that the default value is zero, then that it's restored if you don't set the default value... --- source/_integrations/input_number.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 93168999ab1..084225cb371 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -52,7 +52,7 @@ input_number: description: Initial value when Home Assistant starts. required: false type: float - default: 0 + default: The value at shutdown step: description: Step value for the slider. Smallest value `0.001`. required: false From 1af6dd5edaca5cb9095ee72556e991b3b2ebeba1 Mon Sep 17 00:00:00 2001 From: tomlut <10679300+tomlut@users.noreply.github.com> Date: Thu, 10 Oct 2019 07:34:10 +1100 Subject: [PATCH 42/45] Hostname updated (#10658) Hostname has changed. See discussion here: https://community.home-assistant.io/t/hass-io-mariadb-error-after-snapshot-restoration/130146/9?u=tom_l --- source/_addons/mariadb.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_addons/mariadb.markdown b/source/_addons/mariadb.markdown index 69d08a31000..a945d69f12b 100644 --- a/source/_addons/mariadb.markdown +++ b/source/_addons/mariadb.markdown @@ -11,14 +11,14 @@ Set up a [MariaDB](https://mariadb.org/) SQL server. It supports multiple databa "logins": [ { "username": "hass", - "host": "homeassistant", + "host": "%.local.hass.io", "password": "securePassword" } ], "rights": [ { "username": "hass", - "host": "homeassistant", + "host": "%.local.hass.io", "database": "homeassistant", "grant": "ALL PRIVILEGES ON" } From 94833153676a9c70eeac9a74ee41c0ed0054d14e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 9 Oct 2019 16:09:59 -0700 Subject: [PATCH 43/45] Update blog --- source/_posts/2019-10-09-release-100.markdown | 589 ++++++++++-------- .../blog/2019-10-0.100/action-trigger.png | Bin 0 -> 4350 bytes .../images/blog/2019-10-0.100/components.png | Bin 0 -> 22719 bytes .../blog/2019-10-0.100/condition-and.png | Bin 0 -> 8386 bytes .../2019-10-0.100/device-trigger-sensor.png | Bin 0 -> 5103 bytes .../blog/2019-10-0.100/hacktoberfest.png | Bin 0 -> 9793 bytes source/images/blog/2019-10-0.100/plex.png | Bin 0 -> 176719 bytes source/images/blog/2019-10-0.100/yaml.png | Bin 0 -> 5347 bytes 8 files changed, 345 insertions(+), 244 deletions(-) create mode 100644 source/images/blog/2019-10-0.100/action-trigger.png create mode 100644 source/images/blog/2019-10-0.100/components.png create mode 100644 source/images/blog/2019-10-0.100/condition-and.png create mode 100644 source/images/blog/2019-10-0.100/device-trigger-sensor.png create mode 100644 source/images/blog/2019-10-0.100/hacktoberfest.png create mode 100644 source/images/blog/2019-10-0.100/plex.png create mode 100644 source/images/blog/2019-10-0.100/yaml.png diff --git a/source/_posts/2019-10-09-release-100.markdown b/source/_posts/2019-10-09-release-100.markdown index 0795443fbce..edbed45a59d 100644 --- a/source/_posts/2019-10-09-release-100.markdown +++ b/source/_posts/2019-10-09-release-100.markdown @@ -1,8 +1,8 @@ --- layout: post -title: "0.100: TBD" -description: "TBD" -date: 2019-10-03 14:05:02 +title: "0.100: Better Plex, Bye JSON, HERE Travel time." +description: "A lot of frontend work, performance tweaks and more device automations." +date: 2019-10-09 01:05:02 date_formatted: "October 9, 2019" author: Paulus Schoutsen author_twitter: balloob @@ -13,36 +13,73 @@ og_image: /images/blog/2019-09-0.100/components.png
-TBD +Welcome to the release notes of yet another wonderful release! No, we're not going for 1.0, we're doing 0.100! We feel like we're not ready yet with our vision for 1.0, but we're making progress every day. For a sneak peak of what we're thinking about, check our blog [Simple mode in Home Assistant 1.0](https://developers.home-assistant.io/blog/2019/10/05/simple-mode.html). -## In other news +## Hacktoberfest -TBD +It is Hacktoberfest. This means that we're spending the month celebrating contributing to open source. If you make 4 pull requests this month, you get a free Hacktoberfest t-shirt! More info and what to work on, check [our Hacktoberfest blog post](https://developers.home-assistant.io/blog/2019/09/27/hacktoberfest.html). -## Frontend +Average contributions per day have doubled for the month of October. There are now on average 40 contributions coming in each day. Breakdown is ~50% Home Assistant backend, ~37% documentation and ~13% the frontend. Most of these contributions you'll see in the next release! -### Lovelace +

+Graph of 420 PRs that got opened and merged in the last 14 days. +Last 14 days of pull pequest throughput in the Home Assistant organization. (source) +

-[@iantrich](https://github.com/iantrich) fire has not been put out yet. This version he has also added many new functions to Lovelace! Check the [Lovelace changelog](https://www.home-assistant.io/lovelace/changelog/) for all changes. +## State of the Union 2019 + +We're going to have another State of the Union! It will be held at November 13, in Amsterdam. Like last year, it will be hosted by our friends at ING. I'm looking forward to talk about all the great things that are happening in Home Assistant land. We had 150 tickets available when we announced it on social media, and they were all gone in less than 24 hours! + +We're going to make sure that there will be a live stream available. We'll announce that in time via the blog and social media. Some people on Twitter are talking about hosting viewing parties across the globe. Keep an eye out on [the social category on the forums](https://community.home-assistant.io/c/social) for announcements. + +## Plex + +[@jjlawren] has been on fire with the Plex integration. You will now be able to link your account via the official Plex account link feature. + +

+Screenshot of the Plex user interface asking the user if they want to link with Home Assistant. +Screenshot of the Plex user interface asking the user if they want to link with Home Assistant. +

+ +## Lovelace + +[@iantrich](https://github.com/iantrich) fire has not been put out yet. This version he has also added many new functions to Lovelace! Check the [Lovelace changelog](https://www.home-assistant.io/lovelace/changelog/) for all changes. Some hightlights: -#### Some hightlights: - There are a lot more option for state filtering - We have a bunch of new UI editors - A new action `url` to link to external sites +- Config panel: Disabled entities are now hidden by default. -### Automation editor +## Device automations + +[@emontnemery] has been hard at work at further expanding device automations aided by [@dmulcahey] and [@Kane610]. This release includes improved support for Zigbee (ZHA) devices, sensors, binary sensor, switch and Deconz. One neat new improvement is the addition of a "for" option. This allows you to specify triggers for when a certain device has been on for a period of time. + +

+Screenshot of a device trigger for a temperature sensor. +Screenshot of a device trigger for a temperature sensor. +

+ +## Automation editor [@emontnemery](https://github.com/emontnemery) has added a bunch of functions to the automation editor, you can now use `and` and `or` conditions, and give your automation a description so you know why you did what you did. -### Devices +

+Screenshot of an and-condition in the automation editor. +Screenshot of an and-condition in the automation editor. +

-When we are on automations, we have taken that to the last release introduced device page. You can now see all the triggers, conditions and actions the device supports, and create an automation with it in 1 click. +## Devices -Also the entity registry is added to the device page, so you can change all the settings of the devices entities in one place. -By default the disabled entities are now hidden, you can show them with the switch on the top, this is the same on the general entity registry page. +Device automations are now available on the experimental device page that we introduced in the last release. You can now see all the triggers, conditions and actions the device supports, and create an automation in 1 click. + +We also added the entity registry, so you can change all the settings of the devices entities in one place. When you rename a device on the device page, it will now also rename the entities of that device if they contain the device name. When you are in advanced mode, it can also rename the entity id's for you. +

+Screenshot of a card showing device triggers to create automations from. +

+ ### We say goodbye to JSON On the backend we have been using YAML for a long time, but on the frontend, we still used JSON for a lot of things. JSON is harder to write than YAML so we have aligned that. All data inputs on the frontend now accept YAML. You can still use JSON, as JSON is valid YAML. @@ -55,12 +92,30 @@ This includes: - States in dev tools - Events in dev tools +

+Screenshot of a service action in the automation editor using YAML. +Screenshot of a service action in the automation editor using YAML. +

+ +## In other news + +Hans Oischinger showcased how he can steer his vacuum cleaner to specific rooms in his ouse via his floorplan. Besides this tweet, he also wrote [a great blog about it](https://medium.com/@hans.oischinger/zoned-cleanup-with-live-map-922240b4cf8c). + + + +To improve discovery, we're collecting discovery info of devices and services. Please help us gather [zeroconf discovery info](https://github.com/home-assistant/home-assistant/issues/27371) and [HomeKit discovery info](https://github.com/home-assistant/home-assistant/issues/27292). + +As always, this release of Home Assistan is accompanied with a new release of the [Home Assistant Podcast](https://hasspodcast.io/): + + + ## New Integrations - Add support for DOODS Image Processing ([@snowzach] - [#26208]) ([doods docs]) (new-integration) - Izone component ([@Swamp-Ig] - [#24550]) ([izone docs]) (new-integration) - Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([moscow_yandex_transport docs]) (new-integration) -- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26766]) ([yandex_transport docs]) (new-integration) - Add Kaiterra integration ([@Michsior14] - [#26661]) ([kaiterra docs]) (new-integration) - Add Ombi integration ([@larssont] - [#26755]) ([ombi docs]) (new-integration) - Add here_travel_time ([@eifinger] - [#24603]) ([here_travel_time docs]) (new-integration) @@ -73,15 +128,25 @@ This includes: - Add basic support for IKEA Fyrtur blinds ([@ggravlingen] - [#26659]) ([tradfri docs]) (new-platform) - Centralize rainbird config and add binary sensor platform ([@konikvranik] - [#26393]) ([rainbird docs]) (breaking change) (new-platform) +## 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). + +## 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. + + + ## Breaking Changes - **Removed** - The following integrations which were marked in .98 for pending removal have now been removed (ADR-0004): - * **UPS** - ([@frenck] - [#26824]) ([ups docs]) - * **USPS** - ([@frenck] - [#26823]) ([usps docs]) - * **Sytadin** - ([@frenck] - [#26819]) ([sytadin docs]) - * **SRP Energy** - ([@frenck] - [#26826]) ([srp_energy docs]) - * **Fedex** - ([@frenck] - [#26822]) ([fedex docs]) - * **Linksys AP** - ([@frenck] - [#26847]) ([linksys_ap docs]) + - **UPS** - ([@frenck] - [#26824]) ([ups docs]) + - **USPS** - ([@frenck] - [#26823]) ([usps docs]) + - **Sytadin** - ([@frenck] - [#26819]) ([sytadin docs]) + - **SRP Energy** - ([@frenck] - [#26826]) ([srp_energy docs]) + - **Fedex** - ([@frenck] - [#26822]) ([fedex docs]) + - **Linksys AP** - ([@frenck] - [#26847]) ([linksys_ap docs]) - **NZBGet** - The integration has been changed to support multiple platforms and future events, and common code has been centralized to the component. The configuration has moved from the sensor platform to the `nzbget` key in configuration.yaml, and the `monitored_variables` option has been removed. Users need to update their configuration. - ([@chriscla] - [#26462]) ([nzbget docs]) New example configuration entry: @@ -89,39 +154,45 @@ This includes: ```yaml nzbget: host: 192.168.1.1 - ssl: false + ssl: false ``` + - **SpaceAPI** - Values that were not compliant with the SpaceAPI specification were changed. - * `contact / mailing_list` has changed to `contact / ml`, to migrate change the `mailing_list` key to `ml` - * `location / address` is no longer required but is optional as the latitude and longitude properties of the location are added automatically from the HA config). There is no need to change anything. - ([@Bouni] - [#26453]) ([spaceapi docs]) + + - `contact / mailing_list` has changed to `contact / ml`, to migrate change the `mailing_list` key to `ml` + - `location / address` is no longer required but is optional as the latitude and longitude properties of the location are added automatically from the HA config). There is no need to change anything. - ([@Bouni] - [#26453]) ([spaceapi docs]) - **Linky** - Linky sensors have been grouped to one Linky device. Users will need to remove and re-add the Linky integration to clear the device registry. - ([@piitaya] - [#26738]) ([linky docs]) -- __Elv__ - ELV/PCA is now its own integration. Existing configuration should be removed and replaced. Optionally the port for the serial interface can be specified (default is: /dev/ttyUSB0). - ([@majuss] - [#26552]) ([elv docs]) +- **Elv** - ELV/PCA is now its own integration. Existing configuration should be removed and replaced. Optionally the port for the serial interface can be specified (default is: /dev/ttyUSB0). - ([@majuss] - [#26552]) ([elv docs]) Example configuration entry: + ```yaml elv: - device: '/dev/ttyUSB0' + device: "/dev/ttyUSB0" ``` - -- __Automation__ - Custom component developers who started playing with device automations only: we have restructured how integrations can expose their device triggers/conditions/actions. Instead of 1 platform `device_automation.py` it's now `device_action.py`, `device_trigger.py`, `device_condition.py`. + +- **Automation** - Custom component developers who started playing with device automations only: we have restructured how integrations can expose their device triggers/conditions/actions. Instead of 1 platform `device_automation.py` it's now `device_action.py`, `device_trigger.py`, `device_condition.py`. The method to attach a device trigger has been updated from `async_trigger` to `async_attach_trigger` to better reflect what is going on. - ([@balloob] - [#26880]) ([automation docs]) ([binary_sensor docs]) ([deconz docs]) ([device_automation docs]) ([light docs]) ([switch docs]) ([zha docs]) - + - **Ecobee** - Ecobee will now be set up via config flow. Existing users will have their config imported from ecobee.conf via an import flow so it shouldn't break their experience. Users configuring via configuration.yaml will have their api key and options imported into the flow but will still need to finish authorization via the flow (instead of the configurator component as previously). -The configuration parameter `hold_temp` has been removed, as it was not being used in the climate platform and had no effect on whether the temperature was held indefinitely or not. Users will need to remove the parameter `hold_temp` from configuration.yaml. -Ecobee-specific services will now be registered under the ecobee domain rather than the climate domain, and service names will not include the prefix "ecobee_" (e.g. the service "climate.ecobee_resume_program" will become "ecobee.resume_program"). - ([@marthoc] - [#26634]) ([ecobee docs]) + The configuration parameter `hold_temp` has been removed, as it was not being used in the climate platform and had no effect on whether the temperature was held indefinitely or not. Users will need to remove the parameter `hold_temp` from configuration.yaml. + Ecobee-specific services will now be registered under the ecobee domain rather than the climate domain, and service names will not include the prefix "ecobee\_" (e.g. the service "climate.ecobee_resume_program" will become "ecobee.resume_program"). - ([@marthoc] - [#26634]) ([ecobee docs]) - **Transmission** - The Transmission integration can now be configured through a config flow via Integrations in the GUI. Once configured all sensors and switches will be created and available for the user. -`monitored_conditions` has been removed so existing users need to update their configuration in configuration.yaml and remove monitored conditions. The existing configuration will be imported as an entry under Integrations. - ([@engrbm87] - [#26434]) ([transmission docs]) + `monitored_conditions` has been removed so existing users need to update their configuration in configuration.yaml and remove monitored conditions. The existing configuration will be imported as an entry under Integrations. - ([@engrbm87] - [#26434]) ([transmission docs]) Example configuration entry: + ```yaml transmission: host: 192.168.1.1 ``` -- __Rainbird__ - Rainbird is now its own platform. The configuration of rainbird switches has been moved under `zones:` as part of the `rainbird:` integration. - ([@konikvranik] - [#26393]) ([rainbird docs]) + +- **Rainbird** - Rainbird is now its own platform. The configuration of rainbird switches has been moved under `zones:` as part of the `rainbird:` integration. - ([@konikvranik] - [#26393]) ([rainbird docs]) Example configuration entry: + ```yaml rainbird: host: IP_ADDRESS_OF_MODULE @@ -131,38 +202,66 @@ Ecobee-specific services will now be registered under the ecobee domain rather t 1: trigger_time: 6 ``` -- **Incomfort** - Device state attributes that were causing pointless state changes have been removed: - * `"rf_message_rssi` signal strength (between gateway & boiler), changes almost every scan_interval - * `nodenr` unknown, is static - * `rfstatus_cntr` unknown, changes - - This is not likely to be considered a breaking change by users. - ([@zxdavb] - [#26802]) ([incomfort docs]) -- **Evohome** - Device state attributes keys have been changed to snake_case and, since this a breaking change, the opportunity was taken to revise/simplify the entire device state attributes schema. -Evohome is a complicated integration, has had major changes in recent times, and is not yet mature - these changes address some bugs and related architectural issues: - * Modify behavior of set_temperature to mirror that of the vendor's UI (e.g. any target temp changes until next setpoint, unless explicitly set otherwise) - * Setpoint datetimes are now correctly converted to local/aware isoformat (internally, and for logging/state attributes) - * Use snake_case for device state attributes - * Add a unique_id for each entity (systemId, zoneID, dhwId) - * Refactoring - remove API wrappers (no longer using private methods) - * Add away mode for DHW (set to permanent off or Auto, depending)([@zxdavb] - [#26810]) ([evohome docs]) +- **Incomfort** - Device state attributes that were causing pointless state changes have been removed: + + - `"rf_message_rssi` signal strength (between gateway & boiler), changes almost every scan_interval + - `nodenr` unknown, is static + - `rfstatus_cntr` unknown, changes + + This is not likely to be considered a breaking change by users. - ([@zxdavb] - [#26802]) ([incomfort docs]) + +- **Evohome** - Device state attributes keys have been changed to snake_case and, since this a breaking change, the opportunity was taken to revise/simplify the entire device state attributes schema. + Evohome is a complicated integration, has had major changes in recent times, and is not yet mature - these changes address some bugs and related architectural issues: + + - Modify behavior of set_temperature to mirror that of the vendor's UI (e.g. any target temp changes until next setpoint, unless explicitly set otherwise) + - Setpoint datetimes are now correctly converted to local/aware isoformat (internally, and for logging/state attributes) + - Use snake_case for device state attributes + - Add a unique_id for each entity (systemId, zoneID, dhwId) + - Refactoring - remove API wrappers (no longer using private methods) + - Add away mode for DHW (set to permanent off or Auto, depending)([@zxdavb] - [#26810]) ([evohome docs]) + - **OpenTherm** - Move climate entity state to hvac_action attribute to comply with climate 1.0. May break e.g. automations. - ([@mvn23] - [#25931]) ([opentherm_gw docs]) - **Genius Hub** - Users connecting to a Hub via the v1 API will need to specify a valid MAC address for the hub (see example YAML, below). Those using the v3 API will be unaffected. -This change is in preperation for for further changes, so the geniushub entities can be given more appropriate `entity_ids`. - + This change is in preperation for for further changes, so the geniushub entities can be given more appropriate `entity_ids`. + Some Sensor entities fro GeniusHub Issues have been renamed, and so will get a new entity ID: - * sensor.errors to sensor.geniushub_errors - * sensor.warnings to sensor.geniushub_warnings - * sensor.information to sensor.geniushub_informationeniushub and bump client to v0.6.26 - ([@zxdavb] - [#26640]) ([geniushub docs]) - + - sensor.errors to sensor.geniushub_errors + - sensor.warnings to sensor.geniushub_warnings + - sensor.information to sensor.geniushub_informationeniushub and bump client to v0.6.26 - ([@zxdavb] - [#26640]) ([geniushub docs]) + Example configuration entry: + ```yaml geniushub: token: JqVFd0UUEi... mac: 18:CC:23:12:34:56 ``` +## Beta Fixes + +- Only generate device trigger for sensor with unit ([@emontnemery] - [#27152]) ([sensor docs]) (beta fix) +- Add above and below to sensor trigger extra_fields ([@emontnemery] - [#27160]) ([sensor docs]) (beta fix) +- Update connect-box to fix issue with attrs ([@pvizeli] - [#27194]) ([upc_connect docs]) (beta fix) +- Fix validation when automation is saved from frontend ([@emontnemery] - [#27195]) ([automation docs]) (beta fix) +- Fix ecobee binary sensor and sensor unique ids ([@marthoc] - [#27208]) ([ecobee docs]) (beta fix) +- Bump adb-shell to 0.0.4; bump androidtv to 0.0.30 ([@JeffLIrion] - [#27224]) ([androidtv docs]) (beta fix) +- Fix closed status for non horizontal awnings. ([@psicot] - [#26840]) ([tahoma docs]) (beta fix) +- Fix update on cert_expiry startup ([@jjlawren] - [#27137]) ([cert_expiry docs]) (beta fix) +- Fix onvif PTZ service freeze ([@skgsergio] - [#27250]) ([onvif docs]) (beta fix) +- Fix the todoist integration ([@boralyl] - [#27273]) ([todoist docs]) (beta fix) +- Fix Plex media_player.play_media service ([@jjlawren] - [#27278]) ([plex docs]) (beta fix) +- Remove manual config flow step ([@jjlawren] - [#27291]) ([plex docs]) (beta fix) +- Improve speed websocket sends messages ([@balloob] - [#27295]) ([websocket_api docs]) (beta fix) +- Google: Report all states on activating report state ([@balloob] - [#27312]) ([google_assistant docs]) (beta fix) +- Fix single Plex server case ([@jjlawren] - [#27326]) ([plex docs]) (beta fix) +- Updated frontend to 20191002.1 ([@bramkragten] - [#27329]) ([frontend docs]) (beta fix) +- Fix translations for binary_sensor triggers ([@emontnemery] - [#27330]) ([binary_sensor docs]) (beta fix) +- Fix connection issues with withings API by switching to a maintained codebase ([@vangorra] - [#27310]) ([withings docs]) (beta fix) +- Update zigpy-zigate to 0.4.1 ([@doudz] - [#27345]) ([zha docs]) (beta fix) +- Updated frontend to 20191002.2 ([@bramkragten] - [#27370]) ([frontend docs]) (beta fix) + ## All changes - Add support for DOODS Image Processing ([@snowzach] - [#26208]) ([doods docs]) (new-integration) @@ -216,7 +315,7 @@ This change is in preperation for for further changes, so the geniushub entities - Revert "Add transport data from maps.yandex.ru api (#26252)" ([@pvizeli] - [#26762]) ([yandex_transport docs]) - Bump openwrt-luci-rpc to version 1.1.1 ([@flowolf] - [#26759]) ([luci docs]) - Type hint additions ([@scop] - [#26765]) ([automation docs]) ([cover docs]) ([frontend docs]) ([http docs]) ([media_player docs]) ([switch docs]) -- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26766]) ([yandex_transport docs]) (new-integration) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26766]) ([yandex_transport docs]) - ZHA siren and warning device support ([@dmulcahey] - [#26046]) ([zha docs]) - Bump aiowwlln to 2.0.2 ([@bachya] - [#26769]) ([wwlln docs]) - Bump simplisafe-python to 5.0.1 ([@bachya] - [#26775]) ([simplisafe docs]) @@ -378,54 +477,27 @@ This change is in preperation for for further changes, so the geniushub entities - Fix colorTemperatureInKelvin in Alexa report when light is off ([@ochlocracy] - [#27107]) ([alexa docs]) - Add device trigger support to sensor entities ([@emontnemery] - [#27133]) ([automation docs]) ([binary_sensor docs]) ([device_automation docs]) ([sensor docs]) - Add Google Report State ([@balloob] - [#27112]) ([alexa docs]) ([cloud docs]) ([google_assistant docs]) - -## All frontend changes - -* Fix whitespace error in services ([#3880](https://github.com/home-assistant/home-assistant-polymer/pull/3880)) [@bramkragten](https://github.com/bramkragten) -* Hide empty blocks on device page ([#3950](https://github.com/home-assistant/home-assistant-polymer/pull/3950)) [@bramkragten](https://github.com/bramkragten) -* Fix updating entity id in entity-registry-dialog ([#3962](https://github.com/home-assistant/home-assistant-polymer/pull/3862)) [@bramkragten](https://github.com/bramkragten) -* Add report state toggle for Google ([#3855](https://github.com/home-assistant/home-assistant-polymer/pull/3855)) [@bramkragten](https://github.com/bramkragten) -* Fix dark switch for map card editor ([#3856](https://github.com/home-assistant/home-assistant-polymer/pull/3856)) [@bramkragten](https://github.com/bramkragten) -* Align background with tiles ([#3858](https://github.com/home-assistant/home-assistant-polymer/pull/3858)) [@bramkragten](https://github.com/bramkragten) -* Allow yaml in dev states ([#3859](https://github.com/home-assistant/home-assistant-polymer/pull/3859)) [@bramkragten](https://github.com/bramkragten) -* Allow yaml in dev services ([#3860](https://github.com/home-assistant/home-assistant-polymer/pull/3860)) [@bramkragten](https://github.com/bramkragten) -* Allow yaml in dev events ([#3861](https://github.com/home-assistant/home-assistant-polymer/pull/3861)) [@bramkragten](https://github.com/bramkragten) -* Allow yaml in script and automation ([#3862](https://github.com/home-assistant/home-assistant-polymer/pull/3862)) [@bramkragten](https://github.com/bramkragten) -* Default hide disabled entities from entity registry ([#3863](https://github.com/home-assistant/home-assistant-polymer/pull/3863)) [@bramkragten](https://github.com/bramkragten) -* Guard for null badges ([#3841](https://github.com/home-assistant/home-assistant-polymer/pull/3841)) [@bramkragten](https://github.com/bramkragten) -* Add entity registry functions to device page ([#3843](https://github.com/home-assistant/home-assistant-polymer/pull/3843)) [@bramkragten](https://github.com/bramkragten) -* Allow user selection of text in Lovelace ([#3605](https://github.com/home-assistant/home-assistant-polymer/pull/3605)) [@iantrich](https://github.com/iantrich) -* Update documentation link URL for integrations ([#3857](https://github.com/home-assistant/home-assistant-polymer/pull/3857)) [@frenck](https://github.com/frenck) -* add actions to picture-glance entities ([#3807](https://github.com/home-assistant/home-assistant-polymer/pull/3807)) [@iantrich](https://github.com/iantrich) -* Fix some styling of ha-switch ([#3842](https://github.com/home-assistant/home-assistant-polymer/pull/3842)) [@bramkragten](https://github.com/bramkragten) -* Remove local mdc-datatable ([#3840](https://github.com/home-assistant/home-assistant-polymer/pull/3840)) [@bramkragten](https://github.com/bramkragten) -* Add missing domain icons ([#3836](https://github.com/home-assistant/home-assistant-polymer/pull/3836)) [@SeanPM5](https://github.com/SeanPM5) -* Use filter worker in data-table ([#3808](https://github.com/home-assistant/home-assistant-polymer/pull/3808)) [@bramkragten](https://github.com/bramkragten) -* add image option to entities card ([#3832](https://github.com/home-assistant/home-assistant-polymer/pull/3832)) [@iantrich](https://github.com/iantrich) -* fix alignment of switches positioned absolutely ([#3812](https://github.com/home-assistant/home-assistant-polymer/pull/3812)) [@iantrich](https://github.com/iantrich) -* add state_filter to picture cards ([#3791](https://github.com/home-assistant/home-assistant-polymer/pull/3791)) [@iantrich](https://github.com/iantrich) -* Add a setting for vibration ([#3813](https://github.com/home-assistant/home-assistant-polymer/pull/3813)) [@bramkragten](https://github.com/bramkragten) -* Add hassio supervisor and os update notice ([#3798](https://github.com/home-assistant/home-assistant-polymer/pull/3798)) [@bramkragten](https://github.com/bramkragten) -* Add name to picture entity struct ([#3809](https://github.com/home-assistant/home-assistant-polymer/pull/3809)) [@bramkragten](https://github.com/bramkragten) -* UI Editor for picture-glance card ([#3709](https://github.com/home-assistant/home-assistant-polymer/pull/3709)) [@iantrich](https://github.com/iantrich) -* Fix firefox overflow ([#3806](https://github.com/home-assistant/home-assistant-polymer/pull/3806)) [@bramkragten](https://github.com/bramkragten) -* Expand entity-filter options ([#3692](https://github.com/home-assistant/home-assistant-polymer/pull/3692)) [@iantrich](https://github.com/iantrich) -* Green shade in climate history for platforms that don't support `hvac_action` ([#3787](https://github.com/home-assistant/home-assistant-polymer/pull/3787)) [@OnFreund](https://github.com/OnFreund) -* UI editor for history-graph ([#3782](https://github.com/home-assistant/home-assistant-polymer/pull/3782)) [@iantrich](https://github.com/iantrich) -* cleanup editors ([#3786](https://github.com/home-assistant/home-assistant-polymer/pull/3786)) [@iantrich](https://github.com/iantrich) -* Add support for `and` and `or` conditions to the automation editor. ([#3724](https://github.com/home-assistant/home-assistant-polymer/pull/3724)) [@emontnemery](https://github.com/emontnemery) -* Add support for panels to cast ([#3796](https://github.com/home-assistant/home-assistant-polymer/pull/3796)) [@bramkragten](https://github.com/bramkragten) -* Move views to own folder + use update vs updated in panel view ([#3761](https://github.com/home-assistant/home-assistant-polymer/pull/3761)) [@bramkragten](https://github.com/bramkragten) -* Add Language Urdu ([#3750](https://github.com/home-assistant/home-assistant-polymer/pull/3750)) [@bramkragten](https://github.com/bramkragten) -* Add support for automation description ([#3723](https://github.com/home-assistant/home-assistant-polymer/pull/3723)) [@emontnemery](https://github.com/emontnemery) -* light-card: icon option ([#3771](https://github.com/home-assistant/home-assistant-polymer/pull/3771)) [@iantrich](https://github.com/iantrich) -* Switch paper-toggle-button to mwc-switch ([#3683](https://github.com/home-assistant/home-assistant-polymer/pull/3683)) [@iantrich](https://github.com/iantrich) -* Upgrade some deps ([#3780](https://github.com/home-assistant/home-assistant-polymer/pull/3780)) [@balloob](https://github.com/balloob) -* UI Editor for picture-entity card ([#3708](https://github.com/home-assistant/home-assistant-polymer/pull/3708)) [@iantrich](https://github.com/iantrich) -* picture entity editor fix ([#3783](https://github.com/home-assistant/home-assistant-polymer/pull/3783)) [@iantrich](https://github.com/iantrich) -* new action: url ([#3773](https://github.com/home-assistant/home-assistant-polymer/pull/3773)) [@iantrich](https://github.com/iantrich) -* Replace all default exports in common/ with named exports ([#3790](https://github.com/home-assistant/home-assistant-polymer/pull/3790)) [@iantrich](https://github.com/iantrich) -* Add device automation options to device page ([#3776](https://github.com/home-assistant/home-assistant-polymer/pull/3776)) [@bramkragten](https://github.com/bramkragten) +- Handle all single zone thermostats ([@zxdavb] - [#27168]) ([evohome docs]) +- Only generate device trigger for sensor with unit ([@emontnemery] - [#27152]) ([sensor docs]) (beta fix) +- Add above and below to sensor trigger extra_fields ([@emontnemery] - [#27160]) ([sensor docs]) (beta fix) +- Update connect-box to fix issue with attrs ([@pvizeli] - [#27194]) ([upc_connect docs]) (beta fix) +- Fix validation when automation is saved from frontend ([@emontnemery] - [#27195]) ([automation docs]) (beta fix) +- Fix ecobee binary sensor and sensor unique ids ([@marthoc] - [#27208]) ([ecobee docs]) (beta fix) +- Bump adb-shell to 0.0.4; bump androidtv to 0.0.30 ([@JeffLIrion] - [#27224]) ([androidtv docs]) (beta fix) +- Fix closed status for non horizontal awnings. ([@psicot] - [#26840]) ([tahoma docs]) (beta fix) +- Fix update on cert_expiry startup ([@jjlawren] - [#27137]) ([cert_expiry docs]) (beta fix) +- Fix onvif PTZ service freeze ([@skgsergio] - [#27250]) ([onvif docs]) (beta fix) +- Fix the todoist integration ([@boralyl] - [#27273]) ([todoist docs]) (beta fix) +- Fix Plex media_player.play_media service ([@jjlawren] - [#27278]) ([plex docs]) (beta fix) +- Remove manual config flow step ([@jjlawren] - [#27291]) ([plex docs]) (beta fix) +- Improve speed websocket sends messages ([@balloob] - [#27295]) ([websocket_api docs]) (beta fix) +- Google: Report all states on activating report state ([@balloob] - [#27312]) ([google_assistant docs]) (beta fix) +- Fix single Plex server case ([@jjlawren] - [#27326]) ([plex docs]) (beta fix) +- Updated frontend to 20191002.1 ([@bramkragten] - [#27329]) ([frontend docs]) (beta fix) +- Fix translations for binary_sensor triggers ([@emontnemery] - [#27330]) ([binary_sensor docs]) (beta fix) +- Fix connection issues with withings API by switching to a maintained codebase ([@vangorra] - [#27310]) ([withings docs]) (beta fix) +- Update zigpy-zigate to 0.4.1 ([@doudz] - [#27345]) ([zha docs]) (beta fix) +- Updated frontend to 20191002.2 ([@bramkragten] - [#27370]) ([frontend docs]) (beta fix) [#22311]: https://github.com/home-assistant/home-assistant/pull/22311 [#23495]: https://github.com/home-assistant/home-assistant/pull/23495 @@ -547,6 +619,7 @@ This change is in preperation for for further changes, so the geniushub entities [#26831]: https://github.com/home-assistant/home-assistant/pull/26831 [#26832]: https://github.com/home-assistant/home-assistant/pull/26832 [#26835]: https://github.com/home-assistant/home-assistant/pull/26835 +[#26840]: https://github.com/home-assistant/home-assistant/pull/26840 [#26847]: https://github.com/home-assistant/home-assistant/pull/26847 [#26849]: https://github.com/home-assistant/home-assistant/pull/26849 [#26852]: https://github.com/home-assistant/home-assistant/pull/26852 @@ -640,31 +713,52 @@ This change is in preperation for for further changes, so the geniushub entities [#27133]: https://github.com/home-assistant/home-assistant/pull/27133 [#27134]: https://github.com/home-assistant/home-assistant/pull/27134 [#27135]: https://github.com/home-assistant/home-assistant/pull/27135 -[@Adminiuga]: https://github.com/Adminiuga -[@BKPepe]: https://github.com/BKPepe -[@Bouni]: https://github.com/Bouni -[@CQoute]: https://github.com/CQoute -[@Danielhiversen]: https://github.com/Danielhiversen -[@HarlemSquirrel]: https://github.com/HarlemSquirrel -[@Jc2k]: https://github.com/Jc2k -[@JeffLIrion]: https://github.com/JeffLIrion -[@KJonline]: https://github.com/KJonline -[@Kane610]: https://github.com/Kane610 -[@KiLLeRRaT]: https://github.com/KiLLeRRaT -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@MatthewFlamm]: https://github.com/MatthewFlamm -[@Michsior14]: https://github.com/Michsior14 -[@SNoof85]: https://github.com/SNoof85 -[@SneakSnackSnake]: https://github.com/SneakSnackSnake -[@SukramJ]: https://github.com/SukramJ -[@Swamp-Ig]: https://github.com/Swamp-Ig -[@ViViDboarder]: https://github.com/ViViDboarder +[#27137]: https://github.com/home-assistant/home-assistant/pull/27137 +[#27152]: https://github.com/home-assistant/home-assistant/pull/27152 +[#27160]: https://github.com/home-assistant/home-assistant/pull/27160 +[#27168]: https://github.com/home-assistant/home-assistant/pull/27168 +[#27194]: https://github.com/home-assistant/home-assistant/pull/27194 +[#27195]: https://github.com/home-assistant/home-assistant/pull/27195 +[#27208]: https://github.com/home-assistant/home-assistant/pull/27208 +[#27224]: https://github.com/home-assistant/home-assistant/pull/27224 +[#27250]: https://github.com/home-assistant/home-assistant/pull/27250 +[#27273]: https://github.com/home-assistant/home-assistant/pull/27273 +[#27278]: https://github.com/home-assistant/home-assistant/pull/27278 +[#27291]: https://github.com/home-assistant/home-assistant/pull/27291 +[#27295]: https://github.com/home-assistant/home-assistant/pull/27295 +[#27310]: https://github.com/home-assistant/home-assistant/pull/27310 +[#27312]: https://github.com/home-assistant/home-assistant/pull/27312 +[#27326]: https://github.com/home-assistant/home-assistant/pull/27326 +[#27329]: https://github.com/home-assistant/home-assistant/pull/27329 +[#27330]: https://github.com/home-assistant/home-assistant/pull/27330 +[#27345]: https://github.com/home-assistant/home-assistant/pull/27345 +[#27370]: https://github.com/home-assistant/home-assistant/pull/27370 +[@adminiuga]: https://github.com/Adminiuga +[@bkpepe]: https://github.com/BKPepe +[@bouni]: https://github.com/Bouni +[@cqoute]: https://github.com/CQoute +[@danielhiversen]: https://github.com/Danielhiversen +[@harlemsquirrel]: https://github.com/HarlemSquirrel +[@jc2k]: https://github.com/Jc2k +[@jefflirion]: https://github.com/JeffLIrion +[@kjonline]: https://github.com/KJonline +[@kane610]: https://github.com/Kane610 +[@killerrat]: https://github.com/KiLLeRRaT +[@martinhjelmare]: https://github.com/MartinHjelmare +[@matthewflamm]: https://github.com/MatthewFlamm +[@michsior14]: https://github.com/Michsior14 +[@snoof85]: https://github.com/SNoof85 +[@sneaksnacksnake]: https://github.com/SneakSnackSnake +[@sukramj]: https://github.com/SukramJ +[@swamp-ig]: https://github.com/Swamp-Ig +[@vividboarder]: https://github.com/ViViDboarder [@abmantis]: https://github.com/abmantis [@amelchio]: https://github.com/amelchio [@amigan]: https://github.com/amigan [@bachya]: https://github.com/bachya [@balloob]: https://github.com/balloob [@bbrendon]: https://github.com/bbrendon +[@boralyl]: https://github.com/boralyl [@bramkragten]: https://github.com/bramkragten [@bryanyork]: https://github.com/bryanyork [@chriscla]: https://github.com/chriscla @@ -707,6 +801,7 @@ This change is in preperation for for further changes, so the geniushub entities [@pgilad]: https://github.com/pgilad [@piitaya]: https://github.com/piitaya [@poofyteddy]: https://github.com/poofyteddy +[@psicot]: https://github.com/psicot [@pvizeli]: https://github.com/pvizeli [@ratsept]: https://github.com/ratsept [@rishatik92]: https://github.com/rishatik92 @@ -719,6 +814,7 @@ This change is in preperation for for further changes, so the geniushub entities [@scop]: https://github.com/scop [@sebasje]: https://github.com/sebasje [@shutupflanders]: https://github.com/shutupflanders +[@skgsergio]: https://github.com/skgsergio [@snowzach]: https://github.com/snowzach [@squishykid]: https://github.com/squishykid [@thecynic]: https://github.com/thecynic @@ -726,128 +822,133 @@ This change is in preperation for for further changes, so the geniushub entities [@tleegaard]: https://github.com/tleegaard [@tribut]: https://github.com/tribut [@tsvi]: https://github.com/tsvi +[@vangorra]: https://github.com/vangorra [@zewelor]: https://github.com/zewelor [@zhumuht]: https://github.com/zhumuht [@zxdavb]: https://github.com/zxdavb -[alexa docs]: https://www.home-assistant.io/integrations/alexa/ -[amazon_polly docs]: https://www.home-assistant.io/integrations/amazon_polly/ -[androidtv docs]: https://www.home-assistant.io/integrations/androidtv/ -[automation docs]: https://www.home-assistant.io/integrations/automation/ -[binary_sensor docs]: https://www.home-assistant.io/integrations/binary_sensor/ -[bluetooth_le_tracker docs]: https://www.home-assistant.io/integrations/bluetooth_le_tracker/ -[bluetooth_tracker docs]: https://www.home-assistant.io/integrations/bluetooth_tracker/ -[bmw_connected_drive docs]: https://www.home-assistant.io/integrations/bmw_connected_drive/ -[cert_expiry docs]: https://www.home-assistant.io/integrations/cert_expiry/ -[cloud docs]: https://www.home-assistant.io/integrations/cloud/ -[config docs]: https://www.home-assistant.io/integrations/config/ -[cover docs]: https://www.home-assistant.io/integrations/cover/ -[darksky docs]: https://www.home-assistant.io/integrations/darksky/ -[deconz docs]: https://www.home-assistant.io/integrations/deconz/ -[device_automation docs]: https://www.home-assistant.io/integrations/device_automation/ -[doods docs]: https://www.home-assistant.io/integrations/doods/ -[ebusd docs]: https://www.home-assistant.io/integrations/ebusd/ -[ecobee docs]: https://www.home-assistant.io/integrations/ecobee/ -[egardia docs]: https://www.home-assistant.io/integrations/egardia/ -[elv docs]: https://www.home-assistant.io/integrations/elv/ -[enphase_envoy docs]: https://www.home-assistant.io/integrations/enphase_envoy/ -[environment_canada docs]: https://www.home-assistant.io/integrations/environment_canada/ -[esphome docs]: https://www.home-assistant.io/integrations/esphome/ -[evohome docs]: https://www.home-assistant.io/integrations/evohome/ -[fedex docs]: https://www.home-assistant.io/integrations/fedex/ -[frontend docs]: https://www.home-assistant.io/integrations/frontend/ -[generic docs]: https://www.home-assistant.io/integrations/generic/ -[geniushub docs]: https://www.home-assistant.io/integrations/geniushub/ -[geonetnz_quakes docs]: https://www.home-assistant.io/integrations/geonetnz_quakes/ -[glances docs]: https://www.home-assistant.io/integrations/glances/ -[google_assistant docs]: https://www.home-assistant.io/integrations/google_assistant/ -[group docs]: https://www.home-assistant.io/integrations/group/ -[here_travel_time docs]: https://www.home-assistant.io/integrations/here_travel_time/ -[hive docs]: https://www.home-assistant.io/integrations/hive/ -[homekit docs]: https://www.home-assistant.io/integrations/homekit/ -[homekit_controller docs]: https://www.home-assistant.io/integrations/homekit_controller/ -[homematicip_cloud docs]: https://www.home-assistant.io/integrations/homematicip_cloud/ -[http docs]: https://www.home-assistant.io/integrations/http/ -[hue docs]: https://www.home-assistant.io/integrations/hue/ -[iaqualink docs]: https://www.home-assistant.io/integrations/iaqualink/ -[image_processing docs]: https://www.home-assistant.io/integrations/image_processing/ -[incomfort docs]: https://www.home-assistant.io/integrations/incomfort/ -[influxdb docs]: https://www.home-assistant.io/integrations/influxdb/ -[iperf3 docs]: https://www.home-assistant.io/integrations/iperf3/ -[izone docs]: https://www.home-assistant.io/integrations/izone/ -[kaiterra docs]: https://www.home-assistant.io/integrations/kaiterra/ -[keenetic_ndms2 docs]: https://www.home-assistant.io/integrations/keenetic_ndms2/ -[knx docs]: https://www.home-assistant.io/integrations/knx/ -[lcn docs]: https://www.home-assistant.io/integrations/lcn/ -[lifx docs]: https://www.home-assistant.io/integrations/lifx/ -[lifx_cloud docs]: https://www.home-assistant.io/integrations/lifx_cloud/ -[lifx_legacy docs]: https://www.home-assistant.io/integrations/lifx_legacy/ -[light docs]: https://www.home-assistant.io/integrations/light/ -[linksys_ap docs]: https://www.home-assistant.io/integrations/linksys_ap/ -[linky docs]: https://www.home-assistant.io/integrations/linky/ -[luci docs]: https://www.home-assistant.io/integrations/luci/ -[media_extractor docs]: https://www.home-assistant.io/integrations/media_extractor/ -[media_player docs]: https://www.home-assistant.io/integrations/media_player/ -[meteoalarm docs]: https://www.home-assistant.io/integrations/meteoalarm/ -[moscow_yandex_transport docs]: https://www.home-assistant.io/integrations/moscow_yandex_transport/ -[mqtt docs]: https://www.home-assistant.io/integrations/mqtt/ -[mysensors docs]: https://www.home-assistant.io/integrations/mysensors/ -[nest docs]: https://www.home-assistant.io/integrations/nest/ -[netgear_lte docs]: https://www.home-assistant.io/integrations/netgear_lte/ -[nextbus docs]: https://www.home-assistant.io/integrations/nextbus/ -[nws docs]: https://www.home-assistant.io/integrations/nws/ -[nzbget docs]: https://www.home-assistant.io/integrations/nzbget/ -[obihai docs]: https://www.home-assistant.io/integrations/obihai/ -[ombi docs]: https://www.home-assistant.io/integrations/ombi/ -[onvif docs]: https://www.home-assistant.io/integrations/onvif/ -[opentherm_gw docs]: https://www.home-assistant.io/integrations/opentherm_gw/ -[openuv docs]: https://www.home-assistant.io/integrations/openuv/ -[otp docs]: https://www.home-assistant.io/integrations/otp/ -[owlet docs]: https://www.home-assistant.io/integrations/owlet/ -[persistent_notification docs]: https://www.home-assistant.io/integrations/persistent_notification/ -[pi_hole docs]: https://www.home-assistant.io/integrations/pi_hole/ -[plex docs]: https://www.home-assistant.io/integrations/plex/ -[proxy docs]: https://www.home-assistant.io/integrations/proxy/ -[rainbird docs]: https://www.home-assistant.io/integrations/rainbird/ -[remote_rpi_gpio docs]: https://www.home-assistant.io/integrations/remote_rpi_gpio/ -[rest_command docs]: https://www.home-assistant.io/integrations/rest_command/ -[saj docs]: https://www.home-assistant.io/integrations/saj/ -[sendgrid docs]: https://www.home-assistant.io/integrations/sendgrid/ -[sensor docs]: https://www.home-assistant.io/integrations/sensor/ -[shodan docs]: https://www.home-assistant.io/integrations/shodan/ -[simplisafe docs]: https://www.home-assistant.io/integrations/simplisafe/ -[solaredge_local docs]: https://www.home-assistant.io/integrations/solaredge_local/ -[solax docs]: https://www.home-assistant.io/integrations/solax/ -[soma docs]: https://www.home-assistant.io/integrations/soma/ -[sonos docs]: https://www.home-assistant.io/integrations/sonos/ -[spaceapi docs]: https://www.home-assistant.io/integrations/spaceapi/ -[srp_energy docs]: https://www.home-assistant.io/integrations/srp_energy/ -[sun docs]: https://www.home-assistant.io/integrations/sun/ -[switch docs]: https://www.home-assistant.io/integrations/switch/ -[sytadin docs]: https://www.home-assistant.io/integrations/sytadin/ -[template docs]: https://www.home-assistant.io/integrations/template/ -[tensorflow docs]: https://www.home-assistant.io/integrations/tensorflow/ -[tfiac docs]: https://www.home-assistant.io/integrations/tfiac/ -[tibber docs]: https://www.home-assistant.io/integrations/tibber/ -[torque docs]: https://www.home-assistant.io/integrations/torque/ -[tradfri docs]: https://www.home-assistant.io/integrations/tradfri/ -[transmission docs]: https://www.home-assistant.io/integrations/transmission/ -[unifi docs]: https://www.home-assistant.io/integrations/unifi/ -[ups docs]: https://www.home-assistant.io/integrations/ups/ -[usps docs]: https://www.home-assistant.io/integrations/usps/ -[velux docs]: https://www.home-assistant.io/integrations/velux/ -[venstar docs]: https://www.home-assistant.io/integrations/venstar/ -[vera docs]: https://www.home-assistant.io/integrations/vera/ -[vivotek docs]: https://www.home-assistant.io/integrations/vivotek/ -[volumio docs]: https://www.home-assistant.io/integrations/volumio/ -[watson_tts docs]: https://www.home-assistant.io/integrations/watson_tts/ -[websocket_api docs]: https://www.home-assistant.io/integrations/websocket_api/ -[wemo docs]: https://www.home-assistant.io/integrations/wemo/ -[whois docs]: https://www.home-assistant.io/integrations/whois/ -[wwlln docs]: https://www.home-assistant.io/integrations/wwlln/ -[xbox_live docs]: https://www.home-assistant.io/integrations/xbox_live/ -[xiaomi_aqara docs]: https://www.home-assistant.io/integrations/xiaomi_aqara/ -[yandex_transport docs]: https://www.home-assistant.io/integrations/yandex_transport/ -[yessssms docs]: https://www.home-assistant.io/integrations/yessssms/ -[zha docs]: https://www.home-assistant.io/integrations/zha/ -[zone docs]: https://www.home-assistant.io/integrations/zone/ -[zwave docs]: https://www.home-assistant.io/integrations/zwave/ +[alexa docs]: /integrations/alexa/ +[amazon_polly docs]: /integrations/amazon_polly/ +[androidtv docs]: /integrations/androidtv/ +[automation docs]: /integrations/automation/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bluetooth_le_tracker docs]: /integrations/bluetooth_le_tracker/ +[bluetooth_tracker docs]: /integrations/bluetooth_tracker/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[cert_expiry docs]: /integrations/cert_expiry/ +[cloud docs]: /integrations/cloud/ +[config docs]: /integrations/config/ +[cover docs]: /integrations/cover/ +[darksky docs]: /integrations/darksky/ +[deconz docs]: /integrations/deconz/ +[device_automation docs]: /integrations/device_automation/ +[doods docs]: /integrations/doods/ +[ebusd docs]: /integrations/ebusd/ +[ecobee docs]: /integrations/ecobee/ +[egardia docs]: /integrations/egardia/ +[elv docs]: /integrations/elv/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[evohome docs]: /integrations/evohome/ +[fedex docs]: /integrations/fedex/ +[frontend docs]: /integrations/frontend/ +[generic docs]: /integrations/generic/ +[geniushub docs]: /integrations/geniushub/ +[geonetnz_quakes docs]: /integrations/geonetnz_quakes/ +[glances docs]: /integrations/glances/ +[google_assistant docs]: /integrations/google_assistant/ +[group docs]: /integrations/group/ +[here_travel_time docs]: /integrations/here_travel_time/ +[hive docs]: /integrations/hive/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[http docs]: /integrations/http/ +[hue docs]: /integrations/hue/ +[iaqualink docs]: /integrations/iaqualink/ +[image_processing docs]: /integrations/image_processing/ +[incomfort docs]: /integrations/incomfort/ +[influxdb docs]: /integrations/influxdb/ +[iperf3 docs]: /integrations/iperf3/ +[izone docs]: /integrations/izone/ +[kaiterra docs]: /integrations/kaiterra/ +[keenetic_ndms2 docs]: /integrations/keenetic_ndms2/ +[knx docs]: /integrations/knx/ +[lcn docs]: /integrations/lcn/ +[lifx docs]: /integrations/lifx/ +[lifx_cloud docs]: /integrations/lifx_cloud/ +[lifx_legacy docs]: /integrations/lifx_legacy/ +[light docs]: /integrations/light/ +[linksys_ap docs]: /integrations/linksys_ap/ +[linky docs]: /integrations/linky/ +[luci docs]: /integrations/luci/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[meteoalarm docs]: /integrations/meteoalarm/ +[moscow_yandex_transport docs]: /integrations/moscow_yandex_transport/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[nest docs]: /integrations/nest/ +[netgear_lte docs]: /integrations/netgear_lte/ +[nextbus docs]: /integrations/nextbus/ +[nws docs]: /integrations/nws/ +[nzbget docs]: /integrations/nzbget/ +[obihai docs]: /integrations/obihai/ +[ombi docs]: /integrations/ombi/ +[onvif docs]: /integrations/onvif/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[otp docs]: /integrations/otp/ +[owlet docs]: /integrations/owlet/ +[persistent_notification docs]: /integrations/persistent_notification/ +[pi_hole docs]: /integrations/pi_hole/ +[plex docs]: /integrations/plex/ +[proxy docs]: /integrations/proxy/ +[rainbird docs]: /integrations/rainbird/ +[remote_rpi_gpio docs]: /integrations/remote_rpi_gpio/ +[rest_command docs]: /integrations/rest_command/ +[saj docs]: /integrations/saj/ +[sendgrid docs]: /integrations/sendgrid/ +[sensor docs]: /integrations/sensor/ +[shodan docs]: /integrations/shodan/ +[simplisafe docs]: /integrations/simplisafe/ +[solaredge_local docs]: /integrations/solaredge_local/ +[solax docs]: /integrations/solax/ +[soma docs]: /integrations/soma/ +[sonos docs]: /integrations/sonos/ +[spaceapi docs]: /integrations/spaceapi/ +[srp_energy docs]: /integrations/srp_energy/ +[sun docs]: /integrations/sun/ +[switch docs]: /integrations/switch/ +[sytadin docs]: /integrations/sytadin/ +[tahoma docs]: /integrations/tahoma/ +[template docs]: /integrations/template/ +[tensorflow docs]: /integrations/tensorflow/ +[tfiac docs]: /integrations/tfiac/ +[tibber docs]: /integrations/tibber/ +[todoist docs]: /integrations/todoist/ +[torque docs]: /integrations/torque/ +[tradfri docs]: /integrations/tradfri/ +[transmission docs]: /integrations/transmission/ +[unifi docs]: /integrations/unifi/ +[upc_connect docs]: /integrations/upc_connect/ +[ups docs]: /integrations/ups/ +[usps docs]: /integrations/usps/ +[velux docs]: /integrations/velux/ +[venstar docs]: /integrations/venstar/ +[vera docs]: /integrations/vera/ +[vivotek docs]: /integrations/vivotek/ +[volumio docs]: /integrations/volumio/ +[watson_tts docs]: /integrations/watson_tts/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whois docs]: /integrations/whois/ +[withings docs]: /integrations/withings/ +[wwlln docs]: /integrations/wwlln/ +[xbox_live docs]: /integrations/xbox_live/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yessssms docs]: /integrations/yessssms/ +[zha docs]: /integrations/zha/ +[zone docs]: /integrations/zone/ +[zwave docs]: /integrations/zwave/ diff --git a/source/images/blog/2019-10-0.100/action-trigger.png b/source/images/blog/2019-10-0.100/action-trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..d286ed328c86e28d43aa3e9fe03ef619613ce349 GIT binary patch literal 4350 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 P{~gs;bd;-=Y=Zv-!g*px literal 0 HcmV?d00001 diff --git a/source/images/blog/2019-10-0.100/components.png b/source/images/blog/2019-10-0.100/components.png new file mode 100644 index 0000000000000000000000000000000000000000..17a3915d286b207892a3cec84d5f479b2863b166 GIT binary patch literal 22719 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 literal 0 HcmV?d00001 diff --git a/source/images/blog/2019-10-0.100/condition-and.png b/source/images/blog/2019-10-0.100/condition-and.png new file mode 100644 index 0000000000000000000000000000000000000000..849c58497c7f13671a873590c14188eef95eff82 GIT binary patch literal 8386 zcmb7qcUY6#vUec#ZbC1Dl+a740-}KQ-iw9u3T%)ff)uF%qy!KIk=_JE=>(A8dFi6` zDn${L-UCRx*?Zr6?zzvo_xZl_$2)mut(mNM&6?k=nMu$Fdg_#9%w!MLvd&@oZHy1Kf!ygWHMIX^!?I5_b1^!)w%_wn)Z+S=OD(b3r0 z*xugW=H}+o(o$7b)ym4s&dv@Ni~aTM*YfgmO-;?`&!5Z6%ErgXhlYl3+_+I&TU%aU z&dJH?@9z&SI?T(}+3OUu9)wSXkJ=z`%zO9}*H01Ox=` z-@o6~)b#rG>-?oNUteDl5s~8J;+U8i2M34r^z_isPz42roSYmpGqa72jqvbrTU%R- z(nBpREpBdZB_*Yq{Y$UmQzp!jZs#!wg4pw`n>TMxPfvS!d8w(XJsLOxH!duCPLN2X z|JW&a&C#u9?8fO;^we*+&!=B@E*gHGC(oS;*I~aMUAC;9m;X4=UN}=}JN}Z*NC1Jb z3u~$qRF3q<`)JaB&UAqrFJUa$m6=*s8eR0K zeik!ntxx+Dy-y!pzg6f}FV5Fh9f1xHXHtfaBsq1Gu!Qjo&Dq=1LWe#I+bWX`_J{Hj zS@y#4m3`f=t04QDtWs0$>j`PPbC;MW#V{^ZxH0=Q#`zwQ&oz~?D3$RYC7g>6o?l}N z6aYYyv`(yvPV8s|Iw2ZuI4g!ULL#+T5NcOtn1&e}fHq%uanTOBNb z`|kM#{=TZ3MV*3Ljgc%oLo^7rVs%{|T5Z*kv&Z(&1YUJ2N$#l?nPT#`FVfZ zFW&vDy|?agK-x+4eihZyFSb|n<&N#}CSRV&k-@@s6FPrRkY3GK$pPpeKya)c? zToO-sYRU7R!yIUyRB;C)Mn6odb;QLnZ8^h#m(@&rUOc;OWnfE6cHFexazLozOqG>d z=XtR|q*T&;R(O~q!#CfB{@Q4$u%j!3haGfFlg@%1e)k z7VT@kibp;w+JcXPd{Zgp^Sm-@c*&C^Z1s##4wrl{C+t4OzB?5;U+^S7@u{Iocw@<% zNVMztjmSna#Wrcwf(G!XpHIv2NNX}O;EKMz#zn0URz0b&R%a^4eq%8QX z2ekz_qIofD>QMLoD=Tnr=^6F^IB~Rw&T@vJ(>=7)mvZ+-OCpsq&C=Bzab&avrfy^K zIYMoZXSJ38;)AjPL(Wd~orv)dJGH5dx`G&wMY#r4O>5(&*F^x-cc&uz@}v`V)Iw+3 z8|>9}fvpWR7Xoo-(52#>U*Nq8wUe+AyC|*F@77cj(8&$R?JS_Xg6FE*A|{+i%LItD zj?U5>mQh1z1u1*Y=mi0em`ZNktDQffI%U5?m|+k2H7JDXlR2)Tg-^ePAFiD(g3Ol^ zicK1Re~SKy(%3wtc$?U^$BWE-=<6a z(UfQ6JW7%XV`ejH2cVH(=u0)aXZ3lq*ijTX-bt`%uL2hfcX7!CpN$cX5V#n#b0Kxd zgo#z)?m`d8dNe-Ooc2(sYfMV_YU(f$u{-I(EyZ5kHUmC$Mj966s3 zOitE9Ye<8>41IQJ2~e-H>l;XAe2#-Y6P$|y7K$DbH^m+c>cl2HTALoHF$#|unD*kh z58~Gk!V)j3e3E{Md^H^9`f8Y%;;yb4k9)E^*?2Cbw)y%WCfDYh7^NkJ_72FVKDXEm zF7iFw)lJ&@pmI_9y49QhNIEH9Vzz(Xf%mOF=MplL`oY*$E?%EZcMk>7RGRIRa#i+e2=&@s)IQ%og@X7m&Lem zY7y2{Oki!}YCT ziFKlH?XElW@=iDp52SNpMtD#QWqI8pqjy!-gk_O`m}-4$wK>^_kIA=;IZ6(s1e90G z!u;Ry&@^apPBByvk@DshT!%NDfy{EHN>+qRO$X4H4w7LbN2-94CL#dgXg`#|_$kKi zBL%nK%NQAVPS~8!&oMB-Z;JVcsl@`5=v#}2O8!0`=0rw49~U5HrO#o|$pTxgjOa*7LTm{Xt+(zQs-oh(6j>R>vUG2sLNG)=kE<$q>v=H? zBYS=l2P?(|{8FCb)wZ*e2nT6Kkgv+l;$^GKEM)J2cH}AVO%Ulir8(n6)}S zp;8w0RJ)eZJ^t-mMkUoIy^>@wz%cK|vI47|S8gQ}M3z=`z2|x1O_+BI*DfvN=lh9z zSto(EP1-h5s`)@Y(2JHj(jixg(a<5;du4IAO~16BG^)JESitE9+9|^JF!N8R)e~~s z#9xC&(O+!^u}bIQ#|m)VTYwg5-1AvpyLb3U^DB!QcIY+su(2=y#}5AvOMjZh(-de8 z8#^MQQK(CqMeMuU7np;hW{-ZN*#ZM8e`xM;vUZ=`(H7dbueiiaDqEF7KD?FGJ1m3UuHk*j z0a-q&{v}dlpt@)CEH+8l;;DimKcD&lKN;SlWKHYtS#b0=AgJ?JolKe{Fo;y$Au;fX zT4GZ~N&Bh9ZQoOMbXGK&XL}j}KY$uyZUvKIj{UpQmaeQkW^u z{7=Q`8^M&LNf}f1odW3A0c~!gjq%MwH8@MQJ>bdh7ROJ~p)mH5As__&&JS^*?%1YV z+7Up%{3MQ%6}ycjsMfMI*4fl5NXeHW%(badp9ABN#nmRz%`spK2C;7MD?Ts0Ahsk0pFUB!yj+CaRShP2t=b3-2PqW zaUrZ4m^(XXarbKg>5GSc&8b1UIa?ca!W{k3s;w4^&Ay3x?2l|E>Z023ZQxtPS_z>X z$YW(I{`X*2ngJhp<(yx{jkRZL z-4Je`YtM+VpYVCwOl&fG`$xUOs3fe*uXbd1_lAcz>cn!5BRsrC$ZS-;>}H$MXc86( z@}&O5DZ;=DHK~c6@ zM&8UI!u0#quPlsOiH6E7H7EpgPo)fjka?HxQ0MBT=pcO|kBQ(x(Y%w9f?mcN(6LEvlgB=Um_0Ky;taB{b=y zS6Jt6trNIU1QH&)p;R08GA(urcR9*Y?L#k5cT+vpsQ<+;GGZJ}QN zPa3#n+qFO0*L>;X>xbvAXD%rggc!}>JGqUvq<%S#8c+BlCf&^|iYd5HZzD$}CtUEj zj;F@OOVrF`S8E%u9=5U2=Lw+QXe(PnWH|Sp9e%JN#_59Yb87cB^t-i7#~C$40DUC^S4@BUbHAo8q5$E}YenKs3BA z7I+P0nuYER#w36MK-%t~z^b)bZY}{y@`0RW3BWU0;5@5Tga`a4-IyuWJ9V-3_%=SM zaP=n0^cL46Ze;KRfdO5I5}@|&7KQoSDRw?_Oasyo@LsK2RdGLdd?GC4f1!`0b@T9X z`eTq>OETmI?owdXI^7z+d;|>xwK%WGbc-Y;OiT>LZ9M`!A0>kOL(R8liD|0eHS6c) zSnLibP}9}d+7sMNa7OLfy-GC{7_^!^$xdxnQTOvx+vz_SB_BGKaR`D?!)2R|f0cs;xYF<6U``J}Go?cYvnwHF*F8JHdZwvvwIBpS(Y5HN z%t7Od>Pc6Qc)Y@qtYvsF1}k=G6CdX{hB@lIx)RjUlJi!uLFJKNTo>_9-dd68(biC2 zrXifCNq|WRXUKHCPavHWkK`^4Fq-uwcaHG^ZrffTtzVs@Uv()WRngF4Y&30taAIC1 z38xo{Np_3kLn}Fs)|63e$J5!S914 zzhMS^=sh=mNm&~WK;`u#;E+KlHu3Kocodh4JD-n+7CwFfzR>4lM(?WXY&ME^@uE4! z1C;FZGxIZ**)X_? zIuEIGw$(aZkc~IOC@v>D@osTxVkwF7uPE`~Oa57Q^}yT4|_w0@@D`B0+hhWzNre)HxA%jNxyoe6h}7r8L0Cv16-y4Z#E?Mm9KIgmn9->BCGAZdxdL7^WRcB5Yfwk$C@CMildhl0fn zBzC`Uk^1zsZE}6-V4Y> z(3cCK37*?5I`aWqMHwp(8pI6fn z{<$4;7Y<8hCCiaEYR`z#rt_SrtO>VwE8FFG4HpN`*+~BAQN0MfrUK`#UA|62@OyCE zmT+r%d3?|8Mkac4;M;mOwDB0BL2)0ZS&B8WUrXDmwa|s$ff=!57G3SC+uBafip9L73D9`XyH26 zsFe|mjBrZ298j9|B)hRi3CMaw4lff!ZhlP0-#h=EH`Ez{)(47OSW#>~z3~FX0d9DJ zKU3Ju8UrPb6KIUny_N&|-JheLdskuY;r?}$iRzfXiS1Z|sQO;RN~!-`uK$xz(7mC> zROE>@{`b2L;ed0=`Hdq@Du>i7BP-dLD{mPo8Qy~sB=6H9vYzI+`x2Sm2a2(m2s89G zB$D~s-?ol61^_jbTZ}PK#Dv!bxyDOL}1l zfY&#f!2c+Lk&0?bGhB6@US*D#9(zhlJEnLzVUB*Aa!WMKQ60Jx0X}~B-iv076L|yt z2^PPz2TmC|KGFIV6=ZQIKbB-J^8&IHop|V-njwjVG+UROm)C@@6aLCV{rX1#3co)Q z?lYBVy&M6CX3<2|Q|M*jw(~DLJ+|iUDFZIGskBN>@Gc@#83SX`2~92u77nx;849BG z-{(E>6&ojzPrf-}sqrnM9_aXy(KM3Y5oJ56v|&53PE(^HN4v>Dm-;DDyDx*&EG{AK z7`*lz*FSE`ddB77n%q|p7RE4)old;*=0zn)w@!^J+Dm6m;U5ePrdbi+^V2K)dS>`$ zS;i;jJ$`a=<~((|{)M7tTT=!V-d!?|8}TV<${q+=HA|%@9WKQBl<1$k3Y3~#tSdYKM3JfXLT|l*-N^|jrieo*pMD?5{tu1}_}%szy4o?2XyPK|de2txgMIfyw+j*P z8!x-S48f&!-HplN*VeG6tQQQ#)i2tF^L_J*_I?!wkgXUgRD794OT9CUS(5{u%DpTm z(>Z=l-!!-vTFBJi#cekFaljLjmRUFyZNU?f5p8D3rMUF2e8^wX^gi$8_{N6;6V;~8 zd-^%f>|^)X>rP;F6V!)e>D&}+!a$k^CzY`F4!k%$f<*lUerP_`iw5GnGI+I0 zRZ-L%#$rruniWD?$fv1@AgWg1<%&X4+JR@)Sw-dPo75Q!qOjXETO1hbNP}6;ACIQl z{aR$4Otclh7z}?`)NInA=v{S(8Phm5E7pz#8b-Xg``)LaTXn9XDW4v5YO}|OV$fEH z99wgVaEwrk{V!qRKh1&LGahH}R4@cV4_AIPkDmODKiKS%8CRO0=Soi=%9)!ox!>`{CL#L~ZuON;~X&T^URQwf&Ld zVHwfk5%Z`xwayRirG{JT${ToH8<1aybKWA!uX_7dN_hwHM~(3G?5-KuF|R~(syt{V zRCqjxz^X_q__33}uP{fm4bpQIgvb|J`sJ!`!TpcV@>FPuZO-K%`&*6{5gJX?5VXAH z`(+xg(h?Q+^7BKX-A{|}vwvP)m1imJ*txtN5lY9N3VnSkbFgpw)5821g6==-<@88; z;lPXC8-#~FY3XaY%ZOFO-dCY3eWdwc!1B!)4)m>n&+YU$)K=GB_XV9 zk3`4X+r}FRn1cu9OmBjyMRnkW5Ek}CgF^Z*8rh>ter_nwT?kXP;T^abb)GeU#RrKC zeNp6+a?I!aQGBV?%rhu{l-BG+)_4e8);L)qG7^kdvP3B)h2`A^wCLiu$tok8)K#ba zj|r#4=335*E%@f?ZK&(C156m0P9$$OD*=@Wi~)E5pLE*VojFJQJ7-)|O8(H&Y!!ob zOS)dfmXloY4bB$r1WQ)^DImt$69v8Z6T-8oh-`U#GUDgZo+2MxuFpa>zB+45f7)(IHtUZkYFq zUr^qA8MNm3pw=fVU7$fv$V$^EC~I0rR2sTGdM-`>+eoFy&u%sHuGedeC$AEwv5#Sc zPXR842F8tQFW|L-D^bs=4inpaa>i*<_B^+=wLNz&ZZ(h0X^TkP4^0~&QP&WMl=zI$ z>QBytw`)!ci&RH)nDFgCxUplnuX+L;Sa3V#zOJcsq3n{Fp)h(XDIY^TaNgiQGBH@< zC>K@&7A|+#B>lbc6To=>-j$0J+mR0cM#sJP3=!rP4p4=hhgW0X*@(iU+@@EtV6FLU ziy*jXuAEFmzldBSt_#P4?vVNaq1)&Q!s)y7!brL#4T>{^Bcr9?sPtl(je7Aq7R6j` zY!=TVdYuh~e)-xJkKN{|Q(}zj6w9_qb&6u#G%^P!SPIAswmm{JIgamWF!>l_ik(=w z^Nxq;f@U%jR@=(XBa;@(!Yi>7=s>A(4{)4;l3#0ZNq;!;Q%y#ITgF`JO zZS_GFwTxi?n;|Mjodri>HRzz04ijqP&nyjcd>7ay<|gtF18qpr9Sa;t3uT~ErVSlV zwuINI4}h@BCMdN{sF)Mb;=38C^t|wB6mBXdJC|9g-C$Z2@6qZJJLeb1y6l^#_tMMc z3;J5jon9wqj$Zj6j1j)r&I0tB1j2mL%XTn?cgpKh;CIwJun(g^rf8@>7-s}XaC#^x m8pcVA=?dLIeP92<^78X09rxpst^swX#%_2{TMs9`V|o&F7N zGZ>5ngu&o=gss@Lvx+qzkeSeAN%|J|M>Ca=g*&qhleXGE8E-K&CSib zySpVNCHwpPe0+Qa0^#)Z^vRPanVFgM^Yg>Q!*g?U5fByOB>gwv` z+FIrhW(o6~X0w{? zu}c(uVLmsG=xH!yJeQ(!K8(;T8eT_0=VqN3A_GW1D>oJSZ}9bzR+T%RoGv7d$z_Cwp zoww{UYod^a*U5No<4z*-DB%$awtW0nSZcZY7-#Y7wSxfdo3D37lp zl!2TF_FQ+yyoAp1vssaDE3k^PqMY(zj(f;f*^OL#hZo5(z;nt7w;i=M0imw{_AC4W zs674NQ20v%H(V)x-jt++?e)mj}tKOP{1X^pS>ZF97>k= z*F_Yyi_w%=p<_GF!t%8%9fA^>`gDivPVwU2?=^i8@b5hM6S9<7jgnGuw;)hfBI+7V z>V0+}1ctc6HEcxkB6+lU6SGDKt;Ze~SMbd}NnTC)IA2?Yh$HsU%BU2PGk6=pW`ZKE zzliBJ1sFH}_Y)m?jYn=0{i0T@xPJL-QS=dP?piX}^SRKZQj9pss$8fGp6Fn1g0vqG z;>TXb!p!l;Y@!*km6q}n2P;@@xl`x8k^3}+Bx0YJSOZ32Yfu~RKn|M(#I@mA}uoP_XPtSi=YR5Joj%1{@jY1-lP$ooLOXk@@g`1s{iq6T@cs#wkC!zF}vyKZkbM zwP^czC^h~Zv^fZD9F&@PZk$74uL#ymZv~iL{Fe~+&w;qvS2a`T&!@_W*kiqQe;RN6 zgiE>LwggNk`dq56 zjwc8qe83n++dG2ky&24o1WIVW?`E~OsbR4oTe>}noExg*3aU7bz;FxTo@8F1LTWy_ zaMt}O8#=h%u}SIAbPb+(wt@FZ-si#`7kn~?Paz&a#WuKOex(0U1DP`gcu81i*EnOF z0e{pfOw9BH#S;PNia5a8DIcMtlaHWT#!p{4wgvCdw$ZVx1cKL`EEpEueR?}Qj0UM& zOI|=5EbJ#Ppxs!L^Z>GRS@{}AC^A^E9lU-9VkghQI=~68Da*b1xP4;~O76E`Zff+fk2f=K}*Ra9%E z3}XSbiXl8LDzz`EVD08*jKd0K+O$+cM!Fvj>hvXCu$|qL8eJ5SkSLu=uGuzVV8({A zRvsIL{c)k`y`4vhV2op>8Oxd(eQkt<76Y$mHZ1W0smu9Kx`%@DD!IvE(er4}Md zDRq&ilf}hiT(pPFsTjsW@@Ev&55-iJ0QXsTu>fa*O;_?znS50b>f;90b)UJN`vdOb z3bu-7?Q%WhUsyh(Up>tL3O@D^CITluwJ5Gagrp}q!sH489SBUgZPJ&%)dvNsi)v+_ zC?KW7Lw&%}4kp+~Veh;PXrdk!`jYUMijwO6v_}|orjA=hf-SM3RK&+iG!JjHqq~e5 z(On%%Kw!KQaH$KbxpklgGIr6oRf7bcrD$Ol<-Zo+7yLhR{s7fT4<;7y4<^Rk1qm#7 z|6$$!HFSgmQX5y(e~%2ax<}-34YbE*BxFk3Dw0VP9k}KC`FV|5go3V zyainWhvFXcd?I`-ZGRyX@1g4X`z!6=YGGgXcA~Wn9*h|mc1vJ61mj? zQ%U>7J3aO3&so_|d}Xhfq-8hh3{bHzClAhKcl?jU5F!T+6XA>f{nNVuGxf_Tn8`hZ zOO~GgmPf2Q1GW`y(;~n|?zb3s^)^@E4D*5&+cS9Uut@hLM{pRjB|NtC$Y6%*NEG)# zz@NOBV2Dv-eOM^4lr1J`@SaDBNqsq9^6s;%UpTFc9wp1ZlrMn|a>%P5yih2bdm5~j zQ*{T)8VyzEW=E!ozJLSHA`$3ps-3qmBO^NN!e*e%{PuP>6+L=p8sVmF$rBSNM z7k=#LHOPw<&$J?gO_&}}u3dhe=AjmvH?{B2hRw1_ZkCjogsy10{TE+FvBbSl~$47Kr+`~s?o^tY5NGZsXchTLG$(KlsE6xry zQ2DHY;C2(Q3m^sv5HrJ4pwgiw)H>6iIlPYzlMT5|lHPZZTmK`Lv-#oz_sj$-=A3{i z-SSBIV;`jnKmQ^$TY9N>JoPizPs>@_C^gJAwZ+^-QM255aWxWD5R0d(zNi`8`3&yn z@PSwUxUtMvmO0YvL&S40f05AJAQiGRy?p!xpEgeR%yO_!F0j>oXwz&=;0o!j%o5FP z|CB>dswfz$k<`&Jwal}r*Xs@GO(Csf8_i)C7}5WSVCYklf(vP5-P5t#>gw~cvgy0d z0&f;XPpoI0p!W67G2g{-(AzFbL{EKLFUNiL8fAF|7#yN0UZNZn?1+nb*)%<5DB|#G zh&H5)rW_ZV=5WzPT{Db%N%*Hywf3aG1`G}ku%i_Eo!29t)=&>H=C4@d2odse4H zIK5_u&Lea+*sgo}IB7wA!y?cRygFdRH6sD+t4Ad=(!r zg0aq>(xy9W@anPnjG^>@_c>7JXf5O>i?Gc z2u7eXN4(ppQpLDJF@Dmn#%Rc1ZNhBiMU%^D=D6&x%0s6t&ojP3_h z=!dnfjmxbcr|4ohPZ=7+8qFCNe7hgxtG{_VP_DRkwZI1x&+t5%sJb-R33*E(NXT3K zPd<$Z`YYo`;(~%ykQdrj%~1R6t>Pgn>h4eY8} zO;{-`tHIZA;;$)J`&$RA!vi)_seKDG=m*88?>BvRDMBgPAE+a9iI;j6(rTenKf&rE z;kjYv!70^TgMxJzhK7FgGvD(n+V@TTkhpqDfN3 zm?1~w`%|eQux#^2v^~n~t=W`#Kq_`TG&quL(3W^Qjei}2`?@#(c3%jPw>(y|W zK4#`sX{OwItNX~TOflV~S@hGUZW_tbCkqEoR&~{}hmeGkjmnw9NAT3I@L+OpG_y6y z%we?8_C~`T{b`W1Jv?RH*Lt^HT~!X}#Nk$fJN$Bbp2+UB2InzODT|z(%F<`)d8%KQ zCFH^^t2H=(Z4Cz-{pfQIe<|jOwp+eP#}&u(aFIba`YC>q|8H{B7Y$+r{Ny{OmddGC zQxIM*Z!sXhG=6^lr(7fvSI%%9KIN(X#LcjdDCgydrs zwwb{%9zXd#$v1Oej$^&FNBsMZ4Y>!(UW2-uDDg$@A@CiIt4a8R6dM!(jy9S{u-9Ks z_L(FxPDj0B^vuXO?7b?xL7XZZDPsY(QesGq(@?pwL9D?Ebv$G`U_(F70+p*X`c<<{ zUk@(!aEnZQn3_Cqhld}S?xB_Zn+)?=pf}HpErHP%)#-b_&8rP4H+b`kTTUiAEY#ko8KHtM?W;+pldzgfab!?RmxpWTSP#oe@CRKvHL=sn#D}cPjW!t!zQ# zaw;lCLd1Zv_q7cta7h!J5Re*|xFupF@UDUaO$?Zw6aQL$SP!$VPtg(DyV=D0Q!Y5j z4_vQIz#<{)e%It%h8ArRZcvbqRCpZIW%Ww21%)`QYr=g&^L19(GB z_~*R5gnoze?KBSE?2Yhfz zJ$Hv5(h>lU;_%N>5nZjS7}v|W z0X#^YMww?-V6M9&X8LCF)=tbEi?-9|Ab`8p*1VWX+LpivG?i#f*yR%hU*9M=|G|Ul M>lkalzUCP9Z(5#=m;e9( literal 0 HcmV?d00001 diff --git a/source/images/blog/2019-10-0.100/hacktoberfest.png b/source/images/blog/2019-10-0.100/hacktoberfest.png new file mode 100644 index 0000000000000000000000000000000000000000..089598fbc7c781a147ac83694eba95bb950fb95e GIT binary patch literal 9793 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 a?9qh)TEb8sCiGvxKq`t5g~}K2g8vJ3=?z-| literal 0 HcmV?d00001 diff --git a/source/images/blog/2019-10-0.100/plex.png b/source/images/blog/2019-10-0.100/plex.png new file mode 100644 index 0000000000000000000000000000000000000000..d2281e76adddc85edfeab2ad30a6f7efac0ce0dd GIT binary patch literal 176719 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 Ire+iRZ}8bb{r~^~ literal 0 HcmV?d00001 From e315dc75df7d717f1b43ce0cddf3e052c980e6d9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 9 Oct 2019 16:28:57 -0700 Subject: [PATCH 44/45] Fix broken links --- source/_integrations/doods.markdown | 2 +- .../{switch.pca.markdown => elv.markdown} | 0 .../{pizone.markdown => izone.markdown} | 0 source/_posts/2019-10-09-release-100.markdown | 34 +++++++++---------- source/_redirects | 3 ++ 5 files changed, 21 insertions(+), 18 deletions(-) rename source/_integrations/{switch.pca.markdown => elv.markdown} (100%) rename source/_integrations/{pizone.markdown => izone.markdown} (100%) diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index 76dc5ead0b7..53088e5a9d8 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -4,7 +4,7 @@ description: "Detect and recognize objects with DOODS." ha_category: - Image Processing ha_iot_class: Local Polling -ha_release: 0.100 +ha_release: "0.100" --- The `doods` image processing platform allows you to detect and recognize objects in a camera image using [DOODS](https://github.com/snowzach/doods/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. diff --git a/source/_integrations/switch.pca.markdown b/source/_integrations/elv.markdown similarity index 100% rename from source/_integrations/switch.pca.markdown rename to source/_integrations/elv.markdown diff --git a/source/_integrations/pizone.markdown b/source/_integrations/izone.markdown similarity index 100% rename from source/_integrations/pizone.markdown rename to source/_integrations/izone.markdown diff --git a/source/_posts/2019-10-09-release-100.markdown b/source/_posts/2019-10-09-release-100.markdown index edbed45a59d..5435c6862f4 100644 --- a/source/_posts/2019-10-09-release-100.markdown +++ b/source/_posts/2019-10-09-release-100.markdown @@ -115,7 +115,7 @@ As always, this release of Home Assistan is accompanied with a new release of th - Add support for DOODS Image Processing ([@snowzach] - [#26208]) ([doods docs]) (new-integration) - Izone component ([@Swamp-Ig] - [#24550]) ([izone docs]) (new-integration) -- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([moscow_yandex_transport docs]) (new-integration) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([yandex_transport docs]) (new-integration) - Add Kaiterra integration ([@Michsior14] - [#26661]) ([kaiterra docs]) (new-integration) - Add Ombi integration ([@larssont] - [#26755]) ([ombi docs]) (new-integration) - Add here_travel_time ([@eifinger] - [#24603]) ([here_travel_time docs]) (new-integration) @@ -141,12 +141,12 @@ Experiencing issues introduced by this release? Please report them in our [issue ## Breaking Changes - **Removed** - The following integrations which were marked in .98 for pending removal have now been removed (ADR-0004): - - **UPS** - ([@frenck] - [#26824]) ([ups docs]) - - **USPS** - ([@frenck] - [#26823]) ([usps docs]) - - **Sytadin** - ([@frenck] - [#26819]) ([sytadin docs]) - - **SRP Energy** - ([@frenck] - [#26826]) ([srp_energy docs]) - - **Fedex** - ([@frenck] - [#26822]) ([fedex docs]) - - **Linksys AP** - ([@frenck] - [#26847]) ([linksys_ap docs]) + - **UPS** - ([@frenck] - [#26824]) + - **USPS** - ([@frenck] - [#26823]) + - **Sytadin** - ([@frenck] - [#26819]) + - **SRP Energy** - ([@frenck] - [#26826]) + - **Fedex** - ([@frenck] - [#26822]) + - **Linksys AP** - ([@frenck] - [#26847]) - **NZBGet** - The integration has been changed to support multiple platforms and future events, and common code has been centralized to the component. The configuration has moved from the sensor platform to the `nzbget` key in configuration.yaml, and the `monitored_variables` option has been removed. Users need to update their configuration. - ([@chriscla] - [#26462]) ([nzbget docs]) New example configuration entry: @@ -309,8 +309,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - Bump restrictedpython to 5.0 ([@frenck] - [#26741]) - Izone component ([@Swamp-Ig] - [#24550]) ([izone docs]) (new-integration) - Bump influxdb to 5.2.3 ([@frenck] - [#26743]) ([influxdb docs]) -- Update codeowners ([@amelchio] - [#26733]) ([lifx docs]) ([lifx_cloud docs]) ([lifx_legacy docs]) ([netgear_lte docs]) ([sonos docs]) -- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([moscow_yandex_transport docs]) (new-integration) +- Update codeowners ([@amelchio] - [#26733]) ([lifx docs]) ([lifx_cloud docs]) ([netgear_lte docs]) ([sonos docs]) +- Add transport data from maps.yandex.ru api ([@rishatik92] - [#26252]) ([yandex_transport docs]) (new-integration) - deCONZ improve gateway tests ([@Kane610] - [#26709]) ([deconz docs]) - Revert "Add transport data from maps.yandex.ru api (#26252)" ([@pvizeli] - [#26762]) ([yandex_transport docs]) - Bump openwrt-luci-rpc to version 1.1.1 ([@flowolf] - [#26759]) ([luci docs]) @@ -348,15 +348,15 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add Ombi integration ([@larssont] - [#26755]) ([ombi docs]) (new-integration) - Prevent Wemo doing I/O in event loop ([@balloob] - [#26835]) ([wemo docs]) - Split scaffolding script ([@balloob] - [#26832]) -- Remove deprecated ups integration (ADR-0004) ([@frenck] - [#26824]) ([ups docs]) (breaking change) -- Remove deprecated usps integration (ADR-0004) ([@frenck] - [#26823]) ([usps docs]) (breaking change) -- Remove deprecated sytadin integration (ADR-0004) ([@frenck] - [#26819]) ([sytadin docs]) (breaking change) +- Remove deprecated ups integration (ADR-0004) ([@frenck] - [#26824]) (breaking change) +- Remove deprecated usps integration (ADR-0004) ([@frenck] - [#26823]) (breaking change) +- Remove deprecated sytadin integration (ADR-0004) ([@frenck] - [#26819]) (breaking change) - Add here_travel_time ([@eifinger] - [#24603]) ([here_travel_time docs]) (new-integration) -- Remove deprecated srp_energy integration (ADR-0004) ([@frenck] - [#26826]) ([srp_energy docs]) (breaking change) -- Remove deprecated fedex integration (ADR-0004) ([@frenck] - [#26822]) ([fedex docs]) (breaking change) +- Remove deprecated srp_energy integration (ADR-0004) ([@frenck] - [#26826]) (breaking change) +- Remove deprecated fedex integration (ADR-0004) ([@frenck] - [#26822]) (breaking change) - Store ZHA light brightness when fading off to turn on at the correct brightness ([@abmantis] - [#26680]) ([zha docs]) - Bump pyotp to 2.3.0 ([@frenck] - [#26849]) ([otp docs]) -- Remove deprecated linksys_ap integration (ADR-0004) ([@frenck] - [#26847]) ([linksys_ap docs]) (breaking change) +- Remove deprecated linksys_ap integration (ADR-0004) ([@frenck] - [#26847]) (breaking change) - Bump up ZHA dependencies ([@Adminiuga] - [#26746]) - fix onvif/camera setting up error ([@sanyatuning] - [#26825]) ([onvif docs]) - Bump homematicip_cloud to 0.10.11 ([@SukramJ] - [#26852]) ([homematicip_cloud docs]) @@ -443,7 +443,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Bugfix evohome ([@zxdavb] - [#26810]) ([evohome docs]) (breaking change) - Add saj component ([@fredericvl] - [#26902]) ([saj docs]) (new-integration) - Add availability_template to Template Lock platform ([@grillp] - [#26517]) ([template docs]) -- Cleanup coroutine threadsafe ([@pvizeli] - [#27080]) ([bluetooth_le_tracker docs]) ([generic docs]) ([group docs]) ([mqtt docs]) ([proxy docs]) +- Cleanup coroutine threadsafe ([@pvizeli] - [#27080]) ([bluetooth_le_tracker docs]) ([group docs]) ([mqtt docs]) ([proxy docs]) - Plex external config flow ([@jjlawren] - [#26936]) ([plex docs]) - Bump attrs to 19.2.0 ([@frenck] - [#27102]) - Update meteoalertapi to version 0.1.6 ([@rolfberkenbosch] - [#27099]) ([meteoalarm docs]) @@ -885,7 +885,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_extractor docs]: /integrations/media_extractor/ [media_player docs]: /integrations/media_player/ [meteoalarm docs]: /integrations/meteoalarm/ -[moscow_yandex_transport docs]: /integrations/moscow_yandex_transport/ +[yandex_transport docs]: /integrations/yandex_transport/ [mqtt docs]: /integrations/mqtt/ [mysensors docs]: /integrations/mysensors/ [nest docs]: /integrations/nest/ diff --git a/source/_redirects b/source/_redirects index 5bb2f65fa2f..de66afd057d 100644 --- a/source/_redirects +++ b/source/_redirects @@ -2057,3 +2057,6 @@ /components/zone /integrations/zone /components/zoneminder /integrations/zoneminder /components/zwave /integrations/zwave + +# Breaking changes +/integrations/switch.pca /integrations/elv From e3f0cb3ea2afde15d7ccf4c99fe060d8af6ce423 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 9 Oct 2019 23:38:20 -0700 Subject: [PATCH 45/45] Update post --- _config.yml | 4 +-- ...rkdown => 2019-10-10-release-100.markdown} | 30 +++++++++++-------- 2 files changed, 20 insertions(+), 14 deletions(-) rename source/_posts/{2019-10-09-release-100.markdown => 2019-10-10-release-100.markdown} (97%) diff --git a/_config.yml b/_config.yml index d9c16deede8..e18361fda98 100644 --- a/_config.yml +++ b/_config.yml @@ -100,9 +100,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 100 +current_minor_version: 100 current_patch_version: 0 -date_released: 2019-10-09 +date_released: 2019-10-10 # 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-10-09-release-100.markdown b/source/_posts/2019-10-10-release-100.markdown similarity index 97% rename from source/_posts/2019-10-09-release-100.markdown rename to source/_posts/2019-10-10-release-100.markdown index 5435c6862f4..42eb221281b 100644 --- a/source/_posts/2019-10-09-release-100.markdown +++ b/source/_posts/2019-10-10-release-100.markdown @@ -2,8 +2,8 @@ layout: post title: "0.100: Better Plex, Bye JSON, HERE Travel time." description: "A lot of frontend work, performance tweaks and more device automations." -date: 2019-10-09 01:05:02 -date_formatted: "October 9, 2019" +date: 2019-10-10 01:05:02 +date_formatted: "October 10, 2019" author: Paulus Schoutsen author_twitter: balloob comments: true @@ -13,7 +13,7 @@ og_image: /images/blog/2019-09-0.100/components.png -Welcome to the release notes of yet another wonderful release! No, we're not going for 1.0, we're doing 0.100! We feel like we're not ready yet with our vision for 1.0, but we're making progress every day. For a sneak peak of what we're thinking about, check our blog [Simple mode in Home Assistant 1.0](https://developers.home-assistant.io/blog/2019/10/05/simple-mode.html). +Welcome to the release notes of yet another wonderful release! No, we're not going for 1.0, we're doing 0.100! We feel like we're not ready yet with our goals for 1.0, but we're making progress every day. For a sneak peak of what we're thinking about, check our blog [Simple mode in Home Assistant 1.0](https://developers.home-assistant.io/blog/2019/10/05/simple-mode.html). ## Hacktoberfest @@ -30,7 +30,7 @@ Last 14 days of pull pequest throughput in the Home Assistant organization. ( Screenshot of a card showing device triggers to create automations from.

-### We say goodbye to JSON +We also added the entity registry, so you can change all the settings of the devices entities in one place. + +And, bonus, when you rename a device on the device page, it will now also rename the entities of that device if they contain the device name. When you are in advanced mode, it can also rename the entity id's for you. + +## Goodbye JSON 👋 On the backend we have been using YAML for a long time, but on the frontend, we still used JSON for a lot of things. JSON is harder to write than YAML so we have aligned that. All data inputs on the frontend now accept YAML. You can still use JSON, as JSON is valid YAML. @@ -97,16 +97,22 @@ This includes: Screenshot of a service action in the automation editor using YAML.

+## Thank You, @Amelchio + +Core developer [@amelchio] is taking a break from working on Home Assistant. Amelchio has been a contributing member of the Home Assistant community for 2.5 years in which he made a grand total of 275 pull requests! Amelchio has worked on improving database performance and under his wing the Sonos, LIFX and Netgear LTE integrations flourished. He is an example community member, always available in the chat to help other people contribute to Home Assistant. + +Thanks Anders, we're going to miss you! ❤️ + ## In other news -Hans Oischinger showcased how he can steer his vacuum cleaner to specific rooms in his ouse via his floorplan. Besides this tweet, he also wrote [a great blog about it](https://medium.com/@hans.oischinger/zoned-cleanup-with-live-map-922240b4cf8c). +Hans Oischinger showcased how he can steer his vacuum cleaner to specific rooms in his house via his floorplan. Besides this tweet, he also wrote [a great blog about it](https://medium.com/@hans.oischinger/zoned-cleanup-with-live-map-922240b4cf8c). To improve discovery, we're collecting discovery info of devices and services. Please help us gather [zeroconf discovery info](https://github.com/home-assistant/home-assistant/issues/27371) and [HomeKit discovery info](https://github.com/home-assistant/home-assistant/issues/27292). -As always, this release of Home Assistan is accompanied with a new release of the [Home Assistant Podcast](https://hasspodcast.io/): +As always, this release of Home Assistant is accompanied with a new release of the [Home Assistant Podcast](https://hasspodcast.io/):